DEV.to Article Scraper
Pricing
$2.00 / 1,000 article returneds
DEV.to Article Scraper
Scrape DEV.to articles via the public Forem API — by tag, author, or sort (top/latest/rising). Get clean structured data: title, author, tags, reactions, comments, reading time, cover image, and optional full body. No key, no login.
Pricing
$2.00 / 1,000 article returneds
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
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
Pay-per-result: you are charged once per article row returned. Diagnostic rows (ok: false, such as NO_RESULTS, BLOCKED, RATE_LIMITED, NETWORK) are never charged, so empty or failed runs cost you nothing.
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.