v0.1.2 · Live on PyPI

Automate Python.
Without the mess.

One SDK for Email, Telegram, Discord, Slack, and Google Sheets. Write automation logic in Python — we run it in the cloud.

from apider import Email, Telegram, CloudScheduler

def monitor_inbox():
    emails = Email.read(unread_only=True)
    if emails:
        summary = "\n".join([f"• {e.subject}" for e in emails])
        Telegram.send(f"📬 {len(emails)} new emails:\n{summary}")

# Runs every 10 minutes — in the cloud, forever
CloudScheduler.every_minutes(10, monitor_inbox)
from apider import Email

# Send
Email.send(
    to="team@company.com",
    subject="Daily digest",
    body="Here's your report 📊",
    attachments=["report.pdf"]
)

# Read
emails = Email.read(unread_only=True, mark_as_read=True)
for e in emails:
    print(e.subject, e.email_sender)
from apider import Sheets

# Read as Polars DataFrame with type inference
df = Sheets.read(filters={"status": "pending"})

# Append a new row
Sheets.append(["2026-04-23", "Jorge", 1499])

# Upsert by column match
Sheets.upsert("email", "user@co.com", ["user@co.com", "Pro"])
📧 Gmail
📧 Outlook
✈️ Telegram
💬 Discord
💼 Slack
📊 Google Sheets
CloudScheduler
🔐 Zero secret storage
☁️ Azure Functions
🐍 Pure Python
📧 Gmail
📧 Outlook
✈️ Telegram
💬 Discord
💼 Slack
📊 Google Sheets
CloudScheduler
🔐 Zero secret storage
☁️ Azure Functions
🐍 Pure Python
Why Apider

Built for Python developers
who hate boilerplate

Stop writing 100 lines to send an email. Stop wrestling with OAuth. Just import and run.

One-liner integrations

Email.send() · Telegram.send() · Sheets.append(). No setup wizards, no OAuth flows, no SDK configuration.

☁️

Serverless by default

Your scripts run on Azure Functions. No servers to provision, no containers to manage, no Dockerfile.

Cron as Python

CloudScheduler.every_minutes(10, fn) registers a persistent job in the cloud. No crontab, no Celery.

🔐

Zero secret storage

Your API keys stay in .env on your machine. We never store them — they travel encrypted per-request.

📊

Typed Sheets data

Sheets.read() returns a Polars DataFrame with auto-detected types — integers, floats, strings. No more raw text.

🔀

Multi-channel by nature

Mix Email + Telegram + Discord + Slack in the same script. One execution, multiple outputs.


How it works

Write Python. We handle the rest.

No infrastructure knowledge required. If you can write a function, you can automate anything.

1

Install & configure

pip install apider. Add your API keys to .env. That's it — your credentials never leave your machine.

2

Write your script

Use Email, Telegram, Sheets, Discord, Slack — all as simple Python functions. No boilerplate, no classes to extend.

3

Schedule & forget

CloudScheduler.every_minutes(10, fn) deploys your script to Azure. It runs forever, even when your laptop is off.


Pricing

Simple, transparent pricing

Pay only for what you use. No hidden fees, no credit card required to start.

Start automating today

Install Apider, write your first script, and run it in the cloud — in under 5 minutes.

$ pip install apider