
Congress Stock Trades Scraper
scrape.ly/store/querystone/congress-trades-scraperNewsBusiness
3 monthly users

Scrape Medium articles from profiles, publications, tags, searches and article URLs. Get the full text (plain, Markdown or HTML), author, publication, claps, responses, reading time, word count, tags and dates. No login needed.
Scrape Medium articles from any profile, publication, tag, keyword search or article URL. Get the full article text (plain text, Markdown or HTML) together with the author, publication, claps, responses, reading time, word count, tags and dates. No login, no cookies and no Medium account needed, and you are not limited to the 10 newest posts of an RSS feed.
machine-learning story this month) to feed a knowledge base.@username), tags, publications, search queries or Medium URLs. You can combine them in one run.| Field | What it does |
|---|---|
users | Medium usernames (@janeexample, janeexample) or profile URLs (https://medium.com/@janeexample, https://janeexample.medium.com) |
tags | Tag slugs (machine-learning) or tag URLs |
publications | Publication slugs (better-programming), URLs or custom domains (betterprogramming.pub) |
searchQueries | Keywords to search Medium articles for |
startUrls | Any Medium URL: profile, publication, tag, search, article or RSS feed |
maxItemsPerSource | Articles per source (default 10, 0 = all available) |
maxItems | Optional total cap across all sources |
publishedAfter / publishedBefore | Date (2026-01-01) or period (7 days, 3 months) |
minClaps | Only articles with at least this many claps |
skipMemberOnly | Leave out member-only (paywalled) stories |
tagSort | new (default), oldest, hot, top_week, top_month, top_year, top_all_time |
includeContent / includeMarkdown / includeHtml | Which body formats to save |
{
"tags": ["machine-learning"],
"tagSort": "top_week",
"users": ["@janeexample"],
"maxItemsPerSource": 20,
"publishedAfter": "30 days",
"includeMarkdown": true
}
One row per article.
| Field | Description |
|---|---|
id, url, title, subtitle | The article and its link |
author, authorUsername, authorUrl, authorFollowers, authorBio, authorImageUrl | Who wrote it |
publication, publicationSlug, publicationUrl | The publication it appeared in (empty for personal posts) |
publishedAt, updatedAt | ISO dates (UTC) |
claps, responses, readingTimeMinutes, wordCount | Engagement and length |
isMemberOnly, isPreviewOnly | Member-only story, and whether only its public preview could be read |
tags, tagNames | Tag slugs and display names |
imageUrl | Cover image |
text, markdown, html | The article body in the formats you chose |
source, sourceType, scrapedAt | Which input produced the row, and when |
Example (trimmed):
{
"id": "4f2a9c81d3e7",
"url": "https://medium.com/example-engineering/how-we-cut-our-build-times-in-half-4f2a9c81d3e7",
"title": "How We Cut Our Build Times in Half",
"subtitle": "Three small changes to our CI pipeline that saved our team hours every week…",
"author": "Jane Example",
"authorUsername": "janeexample",
"authorUrl": "https://medium.com/@janeexample",
"authorFollowers": 1840,
"publication": "Example Engineering",
"publicationUrl": "https://medium.com/example-engineering",
"publishedAt": "2026-09-14T08:30:12.401Z",
"updatedAt": "2026-09-14T09:02:45.118Z",
"claps": 512,
"responses": 9,
"readingTimeMinutes": 6.4,
"wordCount": 1487,
"isMemberOnly": false,
"tags": ["devops", "continuous-integration", "software-engineering"],
"imageUrl": "https://miro.medium.com/v2/resize:fit:1400/1*example.png",
"isPreviewOnly": false,
"text": "Our builds used to take 40 minutes. Here is what we changed…",
"source": "#devops",
"sourceType": "tag",
"scrapedAt": "2026-10-21T00:10:21Z"
}
You pay $7 per 1,000 articles ($0.007 per article saved), plus platform usage (compute and proxy traffic), which is not included in the article price but is tiny: in our tests it was under $0.01 per 1,000 articles. For example, 1,000 articles with full text ≈ $7.01 in total. No article fee is charged for inputs that return no articles, and the run stops cleanly when it reaches your spending limit.
Is it legal to scrape Medium? The actor only reads public article pages and data that anyone can see without logging in. You are responsible for how you use the data: respect authors' copyright, Medium's terms and privacy rules such as GDPR.
Do I need a Medium account, login or cookies? No. Leave the proxy setting as it is; datacenter proxies work, and residential addresses are used automatically only if datacenter requests keep being refused.
How many articles can I get? As many as Medium lists for the source: a profile's or publication's archive, or a tag feed, page by page. Set Max articles per source to 0 to take everything available.
Why is some article text short?
Member-only (paywalled) stories show only a preview to readers who are not logged in. Those rows have isMemberOnly: true and isPreviewOnly: true. Turn on Skip member-only articles to leave them out.
What if a field is empty?
Some fields only exist for some articles: personal posts have no publication, and many posts have no subtitle or cover image. Empty fields are null.
Can I schedule it or use the API? Yes. Schedule runs to watch a tag, profile or publication for new articles (combine with Published after: 1 day), and start runs or download results through the API in JSON, CSV or Excel.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
usersarrayOptionalProfiles (usernames)
Medium usernames, with or without @ (e.g. @dhh), or profile URLs. Every article the author published is available, not only the latest 10.
tagsarrayOptionalTags
Medium tags (topics) such as machine-learning or startup, or tag URLs (https://medium.com/tag/python). Sort order is set under Filters.
publicationsarrayOptionalPublications
Publication slugs (better-programming), publication URLs, or custom domains of Medium publications (betterprogramming.pub).
searchQueriesarrayOptionalSearch queries
Keywords to search Medium articles for, one per line (e.g. rust async).
startUrlsarrayOptionalMedium URLs
Any Medium URL: profile, publication, tag, search, single article or RSS feed URL. Article URLs return that article.
maxItemsPerSourceintegerOptionaldefault 10Max articles per source
How many articles to save from each profile, tag, publication or search. 0 means all available.
maxItemsintegerOptionalMax articles in total
Optional cap on the total number of articles saved across all sources. Leave empty for no total cap.
Narrow down which articles are saved.
publishedAfterstringOptionalPublished after
Only articles published on or after this date: a date (2026-01-01) or a period (7 days, 2 weeks, 3 months). Profiles, publications and tags sorted by newest stop once older articles start.
publishedBeforestringOptionalPublished before
Only articles published on or before this date (2025-12-31) or more than a period ago (1 year).
minClapsintegerOptionalMinimum claps
Only articles with at least this many claps.
skipMemberOnlybooleanOptionaldefault falseSkip member-only articles
Leave out member-only (paywalled) stories. Their full text is not public, so only a preview of the body is returned for them.
tagSortenumOptionaldefault "new"Tag feed order
Which articles a tag returns. Newest and Oldest page through the tag's full archive; Trending and Top lists are ranked by Medium and hold up to about 100 articles.
Which formats of the article body to save.
includeContentbooleanOptionaldefault trueInclude full article text
Save the article body as plain text. Switch off for metadata only (title, author, claps, tags, dates).
includeMarkdownbooleanOptionaldefault falseInclude Markdown
Also save the body as Markdown with headings, links, lists, code blocks and images. Handy for LLM and RAG pipelines.
includeHtmlbooleanOptionaldefault falseInclude HTML
Also save the body as clean HTML.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work for Medium. Residential addresses are used automatically only if datacenter requests keep being refused.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| id | string | |
| url | string | |
| title | string | |
| subtitle | string | null | |
| author | string | null | |
| authorUsername | string | null | |
| authorUrl | string | null | |
| authorId | string | null | |
| authorFollowers | number | null | |
| authorBio | string | null | |
| authorImageUrl | string | null | |
| publication | string | null | |
| publicationSlug | string | null | |
| publicationUrl | string | null | |
| publishedAt | string | null | |
| updatedAt | string | null | |
| claps | number | null | |
| responses | number | null | |
| readingTimeMinutes | number | null | |
| wordCount | number | null | |
| isMemberOnly | boolean | |
| tags | array | |
| tagNames | array | |
| imageUrl | string | null | |
| isPreviewOnly | boolean | |
| text | string | null | |
| markdown | string | null | |
| html | string | null | |
| source | string | |
| sourceType | string | |
| scrapedAt | string |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Article | One Medium article saved to the dataset, with its metadata and full text. | $0.007 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('echofield/medium-scraper').call({
"users": [
"@dhh"
],
"tags": [
"machine-learning"
],
"maxItemsPerSource": 10,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run echofield/medium-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=echofield/medium-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
The 20 newest Python articles with full text.
Articles from a publication and one article by URL.
Most popular programming articles of the month with at least 100 claps.
Search Medium for a keyword and save each article as Markdown and HTML.
Machine-learning articles published in March 2024.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.