Medium automation · runs weekly
Get a weekly Medium stats and earnings report
Medium's Stats page shows one month at a time, and the numbers that matter for a single story sit on its own detailed stats page. Comparing 40 stories means 40 clicks and a spreadsheet.
Cotlet does it in your own Medium account with get_account_stats, list_stories and get_story_stats, called by your AI agent, an n8n workflow or a script.
Hosted · nothing to install or maintain
Official options
Can Medium do this on its own?
Medium has no API for stats or earnings, old or new (checked 12 Oct 2026). The Stats pages and the Partner Program earnings dashboard show the numbers in the app, and the only CSV download they offer is the audience one on the Audience tab.
By hand
How you do it in Medium today
- Open the sidebar with the menu icon in the top left of Medium and click Stats, then stay on the Stories tab.
- In the Monthly section, pick a month with the pill-shaped select to see presentations, views, reads, followers and subscribers for that month.
- Sort the Lifetime list by views, reads or lifetime earnings, then click each story to open its detailed stats page with the Member read ratio and traffic sources.
- For money, switch to the Partner Program earnings tab in Stats and read Earnings by story for the month.
- Copy the numbers into a sheet by hand. Medium offers a CSV download only on the Audience page, so per-story numbers never leave the Stats screens on their own.
With an agent
How to get a weekly Medium stats and earnings report
Prompt
Every Monday, send me last month's views and reads against the month before, my top 5 stories by reads, and any paywalled story whose member read ratio dropped. - 01
Pull two months, not one
The agent calls get_account_stats for the last finished month and the month before. A month still in progress is labeled as partial, so a half month is never reported as a drop.
- 02
Walk the whole back catalog
list_stories pages through every published story, 50 at a time, until next_cursor is empty. Drafts and scheduled stories are left out because they have no numbers yet.
- 03
Read each story's numbers
get_story_stats runs per story. Stories with no views in the period are counted but not listed, so the report stays short on a large account.
- 04
Flag what needs attention
For paywalled stories, the agent compares member read ratio with your own average and lists the ones far below it, since Medium adjusts earnings by that ratio. Earnings from the last two days are marked as not final.
- 05
Diff against last week
If you keep the previous report as a file or an n8n table, the agent shows what moved since then: new top stories, stories that stopped getting reads, and follower changes from a single story.
What you get back
Example data
September 2026 vs August: views 9,420 (+12%), reads 4,310 (+8%).
Top by reads: "Shipping small" 912, "Postgres indexes" 640, "Why we dropped GraphQL" 410.
Paywalled, read ratio well below your 38% average: "10 CLI tools I use" at 19%.
Earnings for September: $61.20; the last 2 days are not final yet.
27 stories had no views this month and are not listed. Other ways to ask
- Every Friday, list my stories published in the last 30 days with views, reads and read ratio, newest first.
- Compare my paywalled and free stories from this quarter by reads and tell me which free ones would be worth paywalling.
- On the 3rd of each month, send last month's earnings per story to my Google Sheet.
Before you automate it
What Medium allows, and what to know first
- Medium counts a view after a reader stays on a story for 5 seconds and a read after 30 seconds, deduplicated per user and per day.
- Medium shows presentations only for stories published from 1 January 2025, so older stories report views and reads without a presentation count.
- Medium updates a story's Lifetime numbers hourly during its first month and daily after that, and earnings take up to 48 hours to be finalized.
- Medium adjusts Partner Program earnings by member read ratio (member reads of 30 seconds or more divided by member views): stories below the average go down, stories above it go up.
- Medium's live counts can shift slightly after its hourly deduplication, so a figure read mid-hour may differ from the stable one later.
Every tool here only reads, so it can run weekly from n8n, Make, Zapier or cron without waiting for your OK.
Sources: Medium Help: Stats · Medium Help: Story's detailed stats page · Medium Help: Partner Program earnings calculation · Medium Help: Frequently asked questions about Medium Stats
REST
Call get_account_stats from a script
curl
curl https://cotlet.dev/api/v1/medium/get_account_stats \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"month":"2026-09"}' Example response
{
"month": "2026-09",
"views": 9420,
"reads": 4310
} MCP: add https://cotlet.dev/mcp/v1 with the same key; the tool is medium_get_account_stats. Example data.
Schedule it in n8n, Make, Zapier or cronTools
Medium tools this automation uses
| Tool | Parameters |
|---|---|
| get_account_stats | month |
| list_stories | status, limit, cursor |
| get_story_stats | story_id |
Give your agent access to Medium.
Free 7-day trial with 5,000 credits, no card needed. Cotlet is independent and not affiliated with Medium.