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
5
Total users
1
Monthly active users
13 days ago
Last modified
Categories
Security
Limited permissionsShare
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