DEV.to Scraper - Articles by Tag, Author or Top
Pricing
$2.00 / 1,000 article returneds
DEV.to Scraper - Articles by Tag, Author or Top
Scrape DEV.to articles by tag, author or sort. Every row carries the full article text as well as the link. You also get the title, tags, author, reactions, comments, reading time and cover image. $2.00 per 1,000 articles.
Pricing
$2.00 / 1,000 article returneds
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
DEV.to Scraper: articles by tag, author or reaction count, with no API key
Pick a tag, an author, or neither, and get DEV.to articles back as rows: title, summary, tags, reaction count, comment count, reading time, cover image and the link. It reads DEV's own public API, so there is nothing to sign up for.
The article body is off by default. You get the summary DEV shows in a card, and you turn on Include full body when you want the whole post, which costs a second request per article.
| Input | A tag, an author username, a sort order, or any combination |
| Output | One row per article |
| Ceiling | 1,000 articles per run |
| Account needed | None, and no API key |
| Price | $2.00 per 1,000 articles, flat on every plan |
๐ What DEV.to Scraper does
It queries DEV's public article listing and pages through it, 100 at a time, until it has the number you asked for or the results run out. Duplicate article ids are dropped.
Three orders are available. Top returns the most-reacted articles published in the last
topDays, which is the one to use for finding what actually landed. Latest is newest first.
Rising is what DEV currently considers gaining traction.
Filter by tag, by username, by both, or by neither. With neither, you get the site-wide list for
the order you picked.
๐ฅ What you give it
{"tag": "javascript","sortBy": "top","topDays": 7,"maxItems": 50,"includeBody": false}
| Field | Default | What it is |
|---|---|---|
tag | box starts at javascript | One DEV tag, like react or webdev. Case does not matter, it is lowercased for you. Leave empty for no tag filter. |
username | none | One DEV author username, like ben. Leave empty for no author filter. |
sortBy | top | top, latest or rising. |
topDays | 7 | With top, how far back to look, 1 to 3,650 days. Ignored on the other two orders. |
maxItems | 50 | Articles to return, up to 1,000. |
includeBody | false | Fetch the whole article text as well. One extra request per article, so a big run takes noticeably longer. |
notionConnector | none | Optional. Write every article into your own Notion as well as the dataset. |
notionParentId | none | Optional. The Notion data source ID to write into. |
proxyConfiguration | off | Optional, and off by default because a normal run does not need it. |
An author plus the default seven-day top window often returns nothing, because most people do
not publish every week. For one author's back catalogue, raise topDays or switch sortBy to
latest.
๐ค What you get back
A real row from a recent run:
{"ok": true,"id": 4602684,"title": "So You've Got a Technical Interview in 7 days...","description": "So you got head-hunted. A recruiter from a large company wanted to talk to you about a React...","url": "https://dev.to/cathylai/so-youve-got-a-technical-interview-in-7-days-22g5","author": "Cathy Lai","authorUsername": "cathylai","tags": ["react", "career", "javascript"],"reactions": 9,"comments": 2,"readingTimeMinutes": 2,"coverImage": null,"publishedAt": "2026-09-09T05:18:13Z"}
| Field | What it is |
|---|---|
id | DEV's own article id. Stable, so use it to dedupe across runs. |
description | The card summary DEV shows in a listing, not the article. |
body | Present only when includeBody is on. The article as markdown or HTML. null when that second request did not come back. |
tags | Every tag on the article, not just the one you filtered by. |
reactions, comments, readingTimeMinutes | Counts as DEV reports them. A missing value arrives as 0 rather than null, so a genuine zero and a missing field look the same. |
coverImage | The header image URL, or null when the author set none. |
publishedAt | A real ISO timestamp, or null when DEV did not give one. |
url, authorUsername | Empty strings rather than null when DEV omits them, which is rare. |
๐งพ Reading the output
Two kinds of row can land in your dataset.
| Row | How to spot it | Charged |
|---|---|---|
| An article | ok: true and an id | yes |
| A diagnostic | ok: false and an errorCode | no |
| Code | What it means |
|---|---|
NO_RESULTS | Nothing matched that tag, author, order and window. Widen topDays or drop a filter. |
NOT_FOUND | DEV answered 404 for the listing asked for. Check the username spelling. |
RATE_LIMITED | DEV asked for a slower pace. Re-run with a smaller maxItems. |
SERVER_ERROR | DEV answered with a server error. Usually passes on its own. |
BLOCKED | DEV would not serve the listing this time. |
NETWORK | DEV could not be reached. |
The diagnostic row echoes the tag, username, sortBy and topDays you ran with, which makes it
obvious when an empty result is a filter problem rather than an outage.
The default table view hides publishedAt and body. Switch to All fields or export as
JSON when you need either.
โถ๏ธ How to run it
- Open DEV.to Scraper and click Try for free.
- Put a tag into Tag, or an author into Author username, or leave both empty.
- Pick a Sort by. On
top, set Top days to the window you care about. - Set Max articles, tick Include full body if you want the text, then click Start.
- Download the dataset as JSON, CSV or Excel, or read it from the Apify API.
๐ฐ How much does it cost?
$2.00 per 1,000 articles, which is $0.002 each. Flat on every Apify plan, no volume tiers.
You pay per article row delivered. Duplicates are dropped before they reach you, diagnostic rows are not charged, and a run that matches nothing costs you nothing.
One thing to know before you turn includeBody on: an article whose body request did not come
back still arrives as a row, with body set to null, and still counts. Check for nulls if you
are relying on the text.
๐ก What people use it for
- Finding what actually resonated in a tag this week, with
sortByontopandtopDaysat 7. - Pulling an author's whole catalogue for a reading list or a newsletter.
- Watching a niche tag on a schedule and alerting when something clears a reaction threshold.
- Collecting full article text on a topic with
includeBody, for search or summarisation.
๐ง What it does not do
- No body by default. Turn
includeBodyon and expect the run to take longer. - No comments text. You get the count, not what anybody wrote.
- No reaction breakdown. One total, not hearts against unicorns against bookmarks.
- No series, no organisation feeds, no followers, no reading lists.
latestwith a filter is not strictly chronological. Combininglatestwith a tag or an author asks DEV for its fresh listing, and that order is DEV's, not a strict sort by date. For a reliable date order, sort the rows yourself onpublishedAt.- A missing count reads as
0. There is no way to tell a genuine zero from a field DEV left out. - Nothing older than the window on
top.topDaysis the whole search space for that order. - 1,000 articles per run. For more, narrow by tag and run several times.
๐งญ Which content scraper do you need?
| If you want | Use |
|---|---|
| DEV.to articles by tag or author | This one |
| Wikipedia search results or article text | Wikipedia Scraper |
| Research preprints with abstracts and PDFs | arXiv Scraper |
| Product launches and their upvotes | Product Hunt Scraper |
| Repository and developer data from GitHub | GitHub Scraper |
โ Questions people ask
Do I need a DEV account or an API key? No. The listing API is public.
Why did my author search return nothing? Almost always the default seven-day top window. Raise
topDays, or set sortBy to latest.
How do I get the article text? Tick Include full body. It adds one request per article.
Can I filter by more than one tag? Not in one run. DEV's listing takes a single tag, so run it
once per tag and join the rows on id.
Can I schedule it? Yes. A daily latest run on a tag, deduped on id, keeps a feed current.
Is scraping DEV.to legal? These are public articles served by DEV's own public API. Author names are personal data, which GDPR and similar laws cover, so have a reason for collecting it, and check DEV's terms for reuse of the text. Apify's write-up on scraping and the law is a good starting point, and we are not lawyers.
๐ If something breaks
Open the Issues tab on the actor page. Send the run ID and the tag, username and sort you used.
The errorCode on the diagnostic row usually names the problem on its own.