DEV.to Article Scraper avatar

DEV.to Article Scraper

Pricing

from $1.50 / 1,000 results

Go to Apify Store
DEV.to Article Scraper

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

cloud9

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

0

Monthly active users

6 days ago

Last modified

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

ParameterTypeRequiredDefaultDescription
modestringYes"search"Select how to fetch articles from DEV.to Allowed: search, tag, user, latest.
searchQuerystringNo"react hooks"Keyword to search for in article titles and content (used in 'search' mode)
tagstringNoDEV.to tag to filter articles (e.g., 'javascript', 'webdev', 'python')
usernamestringNoDEV.to username to fetch articles from (used in 'user' mode)
maxResultsintegerYes30Maximum number of articles to scrape
includeFullBodybooleanNofalseFetch full article markdown content (requires additional API calls)
proxyConfigurationobject (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
}
FieldType
idnumber
titlestring
descriptionstring
urlstring
coverImagenull
publishedAtstring
tagsarray
authorobject
reactionsCountnumber
commentsCountnumber
readingTimeMinutesnumber

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 ApifyClient
client = 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 APIPOST 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.
  • maxResults caps 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