Extract public DEV Community articles by tag, author username, or exact article URL. The actor returns clean article metadata, author details, tags, engagement counts, publish dates, links, images, and optional body Markdown/HTML for content research and automation.
Value proposition
DEV.to Articles Scraper helps developer relations, content, SEO, and research teams turn public DEV Community articles into structured datasets.
What data it exports
Use it to collect articles from tags, authors, or known URLs, then export article metadata, engagement, author profiles, media links, and optional body text.
Why use this actor?
- Track developer topics such as
javascript,webdev,ai,python, anddevops - Monitor authors, advocates, competitors, and community influencers
- Build content calendars, newsletters, SEO research sheets, and RAG/LLM datasets
- Export ready-to-use JSON, CSV, Excel, XML, HTML, or API results from Apify
- No DEV.to login, API key, or browser session is required for public articles
Example input
Start from a verified public Example task when you want a ready-made configuration:
- Scrape the latest JavaScript articles from DEV.to
- Find top DEV.to AI articles from the last 7 days
- Scrape articles by a DEV.to author
- Extract DEV.to article bodies with Markdown and HTML
Output example
{
"id": 4110750,
"title": "I Got Tired of Maintaining Frontend Code. So I Built a Declarative UI Runtime.",
"description": "Here is a question that sounds simple until you've actually shipped a UI...",
"url": "https://dev.to/thuangf45/i-got-tired-of-maintaining-frontend-code-so-i-built-a-declarative-ui-runtime-5dbl",
"canonicalUrl": "https://dev.to/thuangf45/i-got-tired-of-maintaining-frontend-code-so-i-built-a-declarative-ui-runtime-5dbl",
"slug": "i-got-tired-of-maintaining-frontend-code-so-i-built-a-declarative-ui-runtime-5dbl",
"path": "/thuangf45/i-got-tired-of-maintaining-frontend-code-so-i-built-a-declarative-ui-runtime-5dbl",
"publishedAt": "2026-07-10T06:15:15Z",
"editedAt": null,
"readablePublishDate": "Jul 10",
"readingTimeMinutes": 16,
"language": "en",
"tags": ["javascript", "webdev", "showdev", "architecture"],
"commentsCount": 9,
"publicReactionsCount": 28,
"positiveReactionsCount": 28,
"coverImage": "https://media2.dev.to/.../cover.png",
"socialImage": "https://media2.dev.to/.../social.png",
"authorName": "Thuangf45",
"authorUsername": "thuangf45",
"authorUserId": 3592872,
"authorProfileImage": "https://media2.dev.to/.../profile.png",
"authorGithubUsername": "thuangf45",
"authorTwitterUsername": null,
"authorWebsiteUrl": "https://thuangf45.github.io/",
"scrapedAt": "2026-07-10T08:00:00.000Z",
"inputMode": "tag",
"sourceTag": "javascript"
}
When includeArticleBody is enabled, each row can also include bodyMarkdown and bodyHtml.
Input settings
| Field | Type | Description | Default |
|---|---|---|---|
mode |
string | tag, username, or articleUrls |
tag |
tags |
string[] | DEV tags to scrape, without #; used in tag mode |
["javascript", "webdev"] |
usernames |
string[] | DEV usernames to scrape, without @; used in username mode |
["ben"] |
articleUrls |
array | Exact public DEV article URLs; used in article URL mode | sample DEV URL |
sort |
string | latest or top where supported |
latest |
topTimeframeDays |
integer | Top-article window: 1, 7, 30, or 365 |
7 |
maxItems |
integer | Maximum total articles saved across all sources | 20 |
includeArticleBody |
boolean | Add body Markdown/HTML fields by fetching article details | false |
Use cases
- Developer relations monitoring: track how often products, frameworks, and languages are discussed.
- Content marketing research: find article ideas, authors, and high-engagement topics.
- Newsletter curation: schedule recurring tag runs and rank results by reactions or comments.
- SEO and competitive intelligence: compare titles, tags, publishing cadence, and engagement.
- LLM/RAG datasets: collect structured public technical writing with optional article body text.
Tips and limits
- Start with a low
maxItemsvalue to validate your input cheaply. - Use
mode: "articleUrls"when you need guaranteed body extraction for a small set of known articles. - DEV may occasionally rate-limit high-volume requests; keep scheduled runs reasonable and retry later if the upstream site is busy.
- Invalid inputs are rejected before the run-start charge. Transient API responses are retried within the run deadline, while invalid API data and removed articles are reported honestly rather than treated as results.
- When a run is near its time limit, saved articles stay in the dataset and
RUN_SUMMARY/PENDING_WORKrecords describe the settled or unfinished work. If optional body content fails for one article, its metadata is still saved withbodyFetchWarning. - The actor only collects public article data. It does not access drafts, private dashboards, notifications, or logged-in features.
API usage
Run the actor from code with the Apify API client.
JavaScript:
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/devto-articles-scraper').call({
mode: 'tag',
tags: ['javascript'],
maxItems: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
Python:
from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("fetch_cat/devto-articles-scraper").call(run_input={
"mode": "tag",
"tags": ["javascript"],
"maxItems": 20,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
cURL:
curl "https://api.apify.com/v2/acts/fetch_cat~devto-articles-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"mode":"tag","tags":["javascript"],"maxItems":20}'
MCP and agent usage
Use this actor from AI agents through Apify MCP:
https://mcp.apify.com?tools=fetch_cat/devto-articles-scraper
Claude CLI:
claude mcp add apify-devto "https://mcp.apify.com?tools=fetch_cat/devto-articles-scraper"
JSON config:
{
"mcpServers": {
"apify-devto": {
"url": "https://mcp.apify.com?tools=fetch_cat/devto-articles-scraper"
}
}
}
Example prompt:
Scrape the latest 20 DEV.to articles tagged
ai, then summarize the top recurring themes by reactions and comments.
Support
Questions, bugs, or missing fields? Open an issue on the actor's Issues tab in Apify Console and include:
- Run ID or run URL
- Input JSON you used
- Expected output
- Actual output
- A reproducible public URL, DEV tag, or username