DEV.to Scraper icon

Developer tools · News & feeds

DEV.to Scraper — Articles by Tag & Author

Pull articles from DEV.to by tag, author, or feed via the official dev.to v1 API — title, body (Markdown), author, tags, reading time, reactions, comment count, publish timestamp — export to JSON or CSV. Free, no key needed for read access.

Free Apify credit covers a first run. No credit card to try.

What this Actor scrapes

DEV.to is the internet's largest developer blogging platform: hundreds of thousands of articles, millions of reactions, and a v1 API that pages in batches of 30. This Actor wraps that API with bulk fan-out — scrape by tag (python, webdev, ai), by author username, or from the global latest or top feed — and delivers one clean, Pydantic-validated row per article with the full Markdown body included.

Whether you need a corpus for fine-tuning a code assistant, a daily digest of trending posts, or a competitive read on a DevRel team's publishing cadence, the DEV.to scraper handles the pagination, retry logic, and rate-limit pacing so you don't have to.

What we handle for you

  • 🛡️ Browser fingerprint rotationcurl-cffi impersonates real Chrome / Firefox / Safari TLS handshakes so requests look like a live browser, not a Python script.
  • 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block or rate-limit response.
  • 🔁 Retries with exponential backoff on 408 / 429 / 5xx — up to 5 attempts per request, Retry-After headers honoured automatically.
  • 🧱 Rate-limit-aware pacing — when the target pushes back we slow down and surface partial results rather than silently dropping them.
  • 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
  • 💰 Pay-Per-Event pricing — you pay only for results that land in your dataset. No data means no charge (beyond the small actor-start warm-up fee).

Use cases

  • RAG corpus seeding — pull all articles for tag=ai or tag=python to build a retrieval-augmented assistant grounded in real developer tutorials.
  • Trending tag dashboards — schedule daily runs on mode=top and diff the output to watch which posts gain traction over time.
  • Author monitoring — mirror a writer's full catalogue and alert your team the moment they publish something new.
  • Newsletter assembly — pull the top 10 articles from a tag each week, render them to Markdown, and pipe straight into your send queue.
  • Competitor DevRel benchmarking — compare engagement (reactions, comments, reading time) across multiple author accounts to see whose content strategy is landing.
  • AI training data — bulk-export articles tagged tutorial or showdev for supervised fine-tuning datasets; body Markdown preserves code blocks cleanly.

Input

Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.

FieldTypeRequiredWhat it does
mode string no Which DEV.to feed to read.
tag string no DEV.to tag, lowercase, no `#`. Examples: python, webdev, typescript.
username string no DEV.to username (no `@`).
includeBody boolean no When true, fetch the article body via a per-article request. One extra API call per article. Without it you still get all the metadata.
maxResults integer no Max articles to return across pages.
concurrency integer no Parallel article-body fetches.
{
  "mode": "tag",
  "tag": "python",
  "includeBody": false,
  "maxResults": 3,
  "concurrency": 4,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}

Output

One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.

idslugtitledescriptionurlcover_imagetagsauthor_usernameauthor_namereading_time_minutespositive_reactions_countcomments_countbody_markdownpublished_atedited_atscraped_at

{
  "id": 1234567,
  "slug": "fast-python-async-tricks-1abc",
  "title": "Fast Python async tricks every dev should know",
  "description": "Five patterns that cut your async boilerplate in half.",
  "url": "https://dev.to/me/fast-python-async-tricks-1abc",
  "author_username": "me",
  "author_name": "Ada Dev",
  "tags": [
    "python",
    "async",
    "webdev"
  ],
  "positive_reactions_count": 142,
  "comments_count": 8,
  "body_markdown": "## Introduction\n\nAsync Python is...",
  "published_at": "2025-11-12T09:00:00Z",
  "edited_at": null,
  "scraped_at": "2026-06-01T07:32:11Z"
}

Pricing

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
Result emitted$0.0020Per result written to the dataset.

You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.

Limitations

  • Body fetch cost: enabling includeBody=true fires one extra API call per article, which counts toward both run time and result cost. Disable it for metadata-only sweeps.
  • API pagination cap: DEV.to's v1 API stops returning results after 1 000 articles per tag/mode. Use narrower tags or multiple sequential runs to exceed that limit.
  • Images and code-block formatting: body Markdown is delivered as-is from the API. Images are URLs, not downloaded files. Code blocks are fenced Markdown, not rendered HTML.
  • Cached API responses: if DEV.to's API returns a stale version of a recently edited article, that is what lands in your dataset. Re-run to refresh.

FAQ

Do I need a DEV.to API key?
No. The DEV.to v1 API allows unauthenticated GET requests for public articles. The Actor handles authentication transparently where needed for higher rate-limit tiers.
What is the difference between `mode=latest` and `mode=top`?
latest returns articles in reverse-chronological order — useful for real-time monitoring. top returns all-time highest-reaction articles — useful for corpus building and quality filtering.
Can I scrape a specific DEV.to tag feed in bulk — for example all `javascript` articles?
Yes. Set mode=tag, tag=javascript, and maxResults to your desired cap. The Actor pages through the API automatically. Note the 1 000-article API cap per tag (see Limitations).
How do I scrape dev.to articles from multiple tags in one run?
The current version accepts a single tag per run. For multi-tag sweeps, use the Apify API to launch parallel runs — one per tag — and merge the datasets downstream.
What is `dev.to articles api` and how does this Actor relate to it?
DEV.to exposes a REST v1 API at https://developers.forem.com/api/v1. This Actor wraps it, handling pagination, retries, backoff, and clean row output — so you write zero client code.
Can I use the output for an AI / RAG dataset?
Yes — the body_markdown field preserves code blocks, headings, and list formatting, making it directly ingestible by most embedding pipelines. Check DEV.to's Terms of Service for your specific use case.
What happens if the Actor hits a rate limit mid-run?
We back off, wait for the Retry-After window, and resume. You will see a partial-progress message in the run log. If the target stops responding entirely, the Actor exits with a clear status message rather than returning a silent empty dataset.

Ready to run it?

Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.

Related Actors

Teams that run this also run