DEV.to Scraper - Articles by Tag, Author or Top avatar

DEV.to Scraper - Articles by Tag, Author or Top

Pricing

$2.00 / 1,000 article returneds

Go to Apify Store
DEV.to Scraper - Articles by Tag, Author or Top

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

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

3 days ago

Last modified

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.

InputA tag, an author username, a sort order, or any combination
OutputOne row per article
Ceiling1,000 articles per run
Account neededNone, 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
}
FieldDefaultWhat it is
tagbox starts at javascriptOne DEV tag, like react or webdev. Case does not matter, it is lowercased for you. Leave empty for no tag filter.
usernamenoneOne DEV author username, like ben. Leave empty for no author filter.
sortBytoptop, latest or rising.
topDays7With top, how far back to look, 1 to 3,650 days. Ignored on the other two orders.
maxItems50Articles to return, up to 1,000.
includeBodyfalseFetch the whole article text as well. One extra request per article, so a big run takes noticeably longer.
notionConnectornoneOptional. Write every article into your own Notion as well as the dataset.
notionParentIdnoneOptional. The Notion data source ID to write into.
proxyConfigurationoffOptional, 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"
}
FieldWhat it is
idDEV's own article id. Stable, so use it to dedupe across runs.
descriptionThe card summary DEV shows in a listing, not the article.
bodyPresent only when includeBody is on. The article as markdown or HTML. null when that second request did not come back.
tagsEvery tag on the article, not just the one you filtered by.
reactions, comments, readingTimeMinutesCounts as DEV reports them. A missing value arrives as 0 rather than null, so a genuine zero and a missing field look the same.
coverImageThe header image URL, or null when the author set none.
publishedAtA real ISO timestamp, or null when DEV did not give one.
url, authorUsernameEmpty strings rather than null when DEV omits them, which is rare.

๐Ÿงพ Reading the output

Two kinds of row can land in your dataset.

RowHow to spot itCharged
An articleok: true and an idyes
A diagnosticok: false and an errorCodeno
CodeWhat it means
NO_RESULTSNothing matched that tag, author, order and window. Widen topDays or drop a filter.
NOT_FOUNDDEV answered 404 for the listing asked for. Check the username spelling.
RATE_LIMITEDDEV asked for a slower pace. Re-run with a smaller maxItems.
SERVER_ERRORDEV answered with a server error. Usually passes on its own.
BLOCKEDDEV would not serve the listing this time.
NETWORKDEV 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

  1. Open DEV.to Scraper and click Try for free.
  2. Put a tag into Tag, or an author into Author username, or leave both empty.
  3. Pick a Sort by. On top, set Top days to the window you care about.
  4. Set Max articles, tick Include full body if you want the text, then click Start.
  5. 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 sortBy on top and topDays at 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 includeBody on 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.
  • latest with a filter is not strictly chronological. Combining latest with 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 on publishedAt.
  • 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. topDays is 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 wantUse
DEV.to articles by tag or authorThis one
Wikipedia search results or article textWikipedia Scraper
Research preprints with abstracts and PDFsarXiv Scraper
Product launches and their upvotesProduct Hunt Scraper
Repository and developer data from GitHubGitHub 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.