DEV.to Article Scraper
Pricing
from $1.50 / 1,000 results
DEV.to Article Scraper
Scrape DEV.to articles, tags, and user profiles via Forem public API. Extract article metadata, content, reactions, comments, and author information.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
cloud9
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
0
Monthly active users
6 days ago
Last modified
Categories
Share
Scrape DEV.to articles, tags, and user profiles via Forem public API. Extract article metadata, content, reactions, comments, and author information.
Use cases
- Find trending developer topics for content planning
- Identify active authors in a niche for outreach
- Benchmark article performance by reactions and comments
- Build a curated developer-news digest
- Monitor mentions of your tool or framework
Input
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
mode | string | Yes | "search" | Select how to fetch articles from DEV.to Allowed: search, tag, user, latest. |
searchQuery | string | No | "react hooks" | Keyword to search for in article titles and content (used in 'search' mode) |
tag | string | No | — | DEV.to tag to filter articles (e.g., 'javascript', 'webdev', 'python') |
username | string | No | — | DEV.to username to fetch articles from (used in 'user' mode) |
maxResults | integer | Yes | 30 | Maximum number of articles to scrape |
includeFullBody | boolean | No | false | Fetch full article markdown content (requires additional API calls) |
proxyConfiguration | object (proxy) | No | {"useApifyProxy":true} | Proxy settings for API requests |
Example input
{"mode": "latest","searchQuery": "react hooks","maxResults": 5,"includeFullBody": false,"proxyConfiguration": {"useApifyProxy": true}}
Output
The exact fields depend on the mode you run. This is real output from an actual run of this Actor:
{"id": 4331776,"title": "Why I Stopped Clicking \"Create Alert\" in the Cloud Console","description": "What I used to do Every time I set up a new server, I'd go into the cloud console and...","url": "https://dev.to/techwithhari/why-i-stopped-clicking-create-alert-in-the-cloud-console-55pm","coverImage": null,"publishedAt": "2026-09-06T15:12:06Z","tags": ["devops","cloud"],"author": {"name": "Haripriya Veluchamy","username": "techwithhari","profileImage": "https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fup…"},"reactionsCount": 0,"commentsCount": 0,"readingTimeMinutes": 2}
| Field | Type |
|---|---|
id | number |
title | string |
description | string |
url | string |
coverImage | null |
publishedAt | string |
tags | array |
author | object |
reactionsCount | number |
commentsCount | number |
readingTimeMinutes | number |
The dataset also ships a preset table view (Overview), so the key columns are readable straight away in Apify Console, and exportable to JSON, CSV, Excel, or XML.
How to run it
In Apify Console — open the Actor, fill in the input form, click Start, then download the results from the Dataset tab.
With the JavaScript client
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('cloud9_ai/devto-scraper').call({"mode": "latest","searchQuery": "react hooks","maxResults": 5,"includeFullBody": false,"proxyConfiguration": {"useApifyProxy": true}});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
With the Python client
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('cloud9_ai/devto-scraper').call(run_input={"mode": "latest","searchQuery": "react hooks","maxResults": 5,"includeFullBody": False,"proxyConfiguration": {"useApifyProxy": True}})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
With the API — POST https://api.apify.com/v2/acts/cloud9_ai~devto-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN with the input JSON as the body.
Notes and limits
- No API key, account, or login is needed — just the input above.
maxResultscaps how much a single run collects, which is also what caps the run's cost.- Requests to the source are paced to stay inside its rate limits.
- Supports Apify Proxy via
proxyConfiguration; the default is fine for most runs. - Only publicly available data is collected. How you use the output is your responsibility, including the source's terms of use and any applicable data-protection law.
Support
Found a bug, or need a field that isn't in the output? Open an issue on the Issues tab of this Actor in Apify Console. Issues there are read and answered.
License
Apache-2.0