DEV.to Scraper
Scrape DEV.to articles by tag, author or sort: title, URL, tags, reactions, comments, reading time, cover image and full body.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
tag,username,sortBy(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.002 per article = $2 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Article returned | Charged per article returned. | $0.002 |
Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-06-13, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
tag | Only return articles with this DEV.to tag (e.g. "javascript", "react", "webdev"). Leave empty to not filter by tag. | string |
username | Only return articles by this DEV.to author username (e.g. "ben"). Leave empty to not filter by author. | string |
sortBy | How to order/select articles. "top" = most reactions in the last N days (see Top days), "latest" = newest first, "rising" = currently rising. | string |
topDays | When Sort by = Top, return the highest-reaction articles published within the last this many days (e.g. 7 = top of the past week, 365 = top of the past year). Ignored for Latest/Rising. | integer |
includeBody | Fetch the full article body (markdown/HTML) for each result via a second API call per article. Slower and makes more requests. | boolean |
maxItems | Maximum number of articles to return. The actor paginates the API (100 per page) until this many are collected or the results run out. | integer |
notionConnector | Optional. Write each article as a page into your Notion when the run finishes. Authorize a Notion connector once in Settings → API & Integrations → MCP connectors, then pick it here. Leave empty to skip (default) — results are always saved to the dataset regardless. | string |
notionParentId | Optional. The Notion data source ID of the database to write into (only used if a Notion connector is set). Leave empty to create the pages privately in your workspace instead. | string |
What you get
A structured dataset — each result includes fields like:
titleauthortagsreactionscommentsurlExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in Developer & Research Tools
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
Wikidata Scraper
Resolve names or Q-ids to Wikidata entities for $0.20 per 1,000 plus $0.001 per run. Labels, aliases, instance-of, claims and Wikipedia links.
Domain Inspector
Bulk-inspect domains: DNS records, RDAP registrar and expiry, redirects, TLS dates, security headers, robots, sitemaps and tech detection.
GitHub Scraper
Search GitHub repos or users and export clean rows: stars, forks, language, topics, license, plus user bio, company, location and follower count.
Stack Overflow / Stack Exchange Scraper
Search Stack Overflow and Stack Exchange by keyword or tags. Get structured questions with score, answers, views, tags, author, and link as JSON or CSV.
Package Registry Scraper (npm + PyPI)
Get npm and PyPI package metadata - version, license, repo, keywords, and npm download counts. Search by keyword or look up exact names. No API key needed.
arXiv Scraper
Search arXiv and get clean JSON: titles, abstracts, authors, categories, DOI, dates and PDF links. No API key. Sort by relevance or date; push to Notion.
Where this tool sits
- Categories
- Developer & Research Tools
DEV.to Article Scraper
Scrape DEV.to articles via the public Forem API — no API key, no login, no anti-bot. Filter by tag or author, choose how results are sorted, and optionally pull the full article body.
What you get per article
id, title, description, url, author, authorUsername, tags, reactions, comments, readingTimeMinutes, coverImage, publishedAt. Turn on Include full body to also get body (markdown/HTML).
Nullable fields: coverImage and publishedAt are null when DEV.to does not supply them. When Include full body is on, body can be null for an article whose full-body fetch fails or is empty; the row is still returned (with ok: true) so you can see which articles were affected.
Input
| Field | Notes |
|---|---|
tag | Only articles with this tag, e.g. javascript, react, webdev. Optional. |
username | Only articles by this author, e.g. ben. Optional. |
sortBy | top (most reactions in the last N days), latest (newest), or rising. Default top. |
topDays | Window for top sorting, e.g. 7 = top of the week, 365 = top of the year. Default 7. |
includeBody | Fetch the full article body per result (extra API call each). Default off. |
maxItems | How many articles to return. The actor paginates until it has this many. Default 50. |
Output
One dataset row per article, each with ok: true. Empty/no-match inputs return a single diagnostic row with ok: false and an errorCode (e.g. NO_RESULTS) — that diagnostic row is not charged, it is just an explanation that the tag/username/sort combination matched no articles.
Pricing
$2.00 per 1,000 articles ($0.002 each), with no run-start fee. Flat rate — no volume tiers, no plan gates — and you are charged once per article row actually returned. Diagnostic rows (ok: false, such as NO_RESULTS, BLOCKED, RATE_LIMITED, NETWORK) are never charged, so empty or failed runs cost you nothing at all.
includeBody is free. Turning it on adds one extra Forem API call per article to fetch the full markdown/HTML body, but the price stays $0.002 per row — a 50-article run with full bodies costs $0.10, the same as one without.
Proxy
No proxy is needed. The Forem API (https://dev.to/api) is a public, no-auth, no-anti-bot endpoint, so the default is no proxy and runs work fine without one. Only enable Apify Proxy if you hit IP-based rate limits on very large runs.
Troubleshooting
If you get a single NO_RESULTS diagnostic row instead of articles, the tag/username/sort combination matched nothing — double-check the spelling of the tag or username (DEV.to tags are lowercase, e.g. javascript not JavaScript), or widen topDays. A RATE_LIMITED or NETWORK row means the API throttled or a transient network error occurred; re-run, or enable Apify Proxy for large runs. None of these diagnostic rows are charged.
Examples
Top JavaScript articles of the last month:
{ "tag": "javascript", "sortBy": "top", "topDays": 30, "maxItems": 50 }
Latest articles from a specific author:
{ "username": "ben", "sortBy": "latest", "maxItems": 30 }
Notes
Built on the documented Forem API (https://dev.to/api). The top window selects the highest-reaction articles published within the last topDays days. latest returns the newest articles; rising returns currently rising posts. Results are deduplicated by article id.