# Dev.to Top Articles Scraper - Tags, Reactions, Comments (`fetchcraft/devto-top-articles-scraper`) Actor

Scrape top dev.to articles by reaction count. Filter by tag (ai, webdev, javascript, python, rust, etc), time window (today, week, month, year), and minimum reactions. Returns title, URL, author, reactions, comments, tags. Useful for tech content research. $0.005 per article. Free preview.

- **URL**: https://apify.com/fetchcraft/devto-top-articles-scraper.md
- **Developed by:** [Emily Ward](https://apify.com/fetchcraft) (community)
- **Categories:** Developer tools, Social media, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$20.00 / 1,000 article returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Dev.to Top Articles Scraper

**Pulls the top articles from Dev.to over a configurable time window. Returns article metadata plus author handle, profile URL, Twitter, GitHub, and website. Filter by tag. Pairs with the AI Sales Personalizer for outreach to influential developer authors.**

### What you get back per article

| Field | Description |
| --- | --- |
| `id` | Dev.to article ID |
| `title` | Article title |
| `description` | First-paragraph summary |
| `url` | Article URL |
| `author` | Dev.to username |
| `author_name` | Display name |
| `author_url` | Author's Dev.to profile |
| `author_website` | Their personal site (if set) |
| `author_twitter` | Twitter handle (if set) |
| `author_github` | GitHub handle (if set) |
| `tags` | Comma-separated Dev.to tags |
| `reactions` | Public reactions count |
| `comments` | Comments count |
| `reading_time_minutes` | Estimated reading time |
| `published_at` | Publish timestamp |

### Pricing

- **Preview mode**: $0 (5 articles, no charges)
- **Standard**: $0.005 per article returned

Typical run for "AI tag, top 7 days" = 30 to 80 articles = $0.15 to $0.40.

### Use cases

**Devtools companies** use Dev.to top articles to identify influential authors writing about their category. An author who writes a top-ranking "review of X" article is the ideal partnership / sponsorship / customer target.

**Recruiters** at AI / devtools companies use the author lists for sourcing candidates with proven technical writing skills and audience.

**Content marketers** monitor top articles to identify the topics gaining traction in their category, then write competing/complementary content.

**Community managers** identify their target audience's most-read authors to invite as guest speakers, podcast guests, or partner content collaborators.

### How to use it

1. Click **Try for free** with `preview_mode` ticked.
2. Set `top_days`: 1 (today), 7 (this week), 30 (this month).
3. (Optional) Set `tag`: 'ai', 'webdev', 'javascript', 'rust', 'python', etc.
4. (Optional) `min_reactions`: 10 default, 50+ for popular only.
5. Hit Start.

### Pipeline: combine with AI Sales Personalizer

1. Run this with `tag: ai`, `top_days: 30`, `min_reactions: 50`. Get back 50 to 200 authors of trending AI articles.
2. Take the `author_website` column (the authors who set a personal site). Typically 30 to 50 percent of authors.
3. Feed those URLs into **AI Sales Personalizer**.
4. Get back personalized openers referencing the author's own site and content.

Total monthly cost: $1 (Dev.to scrape) + ~$10 (50 personalizations at $0.15) = $11/month for fresh influencer-tier developer prospects with personalized first touches.

### Sister actors

- **AI Sales Personalizer**: turns author URLs into personalized cold openers
- **GitHub Trending Scraper**: complementary OSS-maintainer leads
- **HN Who Is Hiring Scraper**: complementary hiring signals
- **Show HN Lead Scraper**: complementary product-launch leads
- **ProductHunt Daily Launches Scraper**: complementary product-launch leads
- **Greenhouse Public Jobs Scraper**: complementary per-company hiring monitoring

Pairing the full seven-actor portfolio gives the most complete developer-audience B2B intelligence available on Apify Store for under $20/month.

### What this does NOT do

- Does not pull article body content (the `url` is provided so you can fetch separately if needed)
- Does not authenticate with Dev.to user accounts
- Does not extract email addresses (use Hunter, Clearbit, or your own enrichment)

### Tips

1. **Run weekly with `tag: ai, top_days: 7`** to maintain a fresh pipeline of trending developer authors.
2. **Combine multiple tags via separate runs** since the API accepts one tag at a time.
3. **Filter by `author_website` not null** in your downstream tools, since those authors have a clear outreach surface.

### FAQ

**Q: Is this allowed by Dev.to?**
Yes. The Dev.to API is publicly documented and free to use. They explicitly support article listing endpoints without auth.

**Q: How current is the data?**
Dev.to's top rankings refresh hourly. The data is real-time enough for most use cases.

### Tags

`devto` `developer-content` `b2b` `lead-generation` `devrel` `content-marketing` `recruiting` `developer-influencers`

---

Built by Emily Ward, Sydney. Seventh actor in the B2B intel portfolio.


### Integrations

This actor works out of the box with every Apify-supported integration:

- **API**: call via Apify API or any official SDK (Python, JavaScript, PHP, .NET). Returns a clean dataset URL.
- **Schedule**: set a daily, weekly, or custom cron cadence in Apify Console. Combine with `notification` for fresh feeds.
- **Webhooks**: wire `ACTOR.RUN.SUCCEEDED` to Slack, Discord, Zapier, Make, n8n, Pipedream, or any HTTPS endpoint.
- **MCP**: this actor is discoverable through Apify's hosted MCP server at `mcp.apify.com` for Claude, Cursor, Cline, Windsurf, and other MCP clients.
- **n8n / Make / Zapier**: native HTTP-Request integration. Trigger the actor on schedule, pipe results to Google Sheets, Airtable, your CRM, or any database.

### Try it free

Every Apify user gets **$5/month in free platform credits** (around 250 events at this actor's per-event price). Run preview mode first to confirm output shape before scaling.

New to Apify? [Sign up here](https://apify.com/sign-up?fpr=fetchcraft) to get free credits on signup.

### What's New

- 2026-06-03: Metadata, categories, and SEO refreshed. Latest version live on Apify Store.

### Last Updated

2026-06-03

# Actor input Schema

## `top_days` (type: `integer`):

How many days back to compute 'top'. 1 = today's top, 7 = this week's top, 30 = this month's top. Dev.to ranks by reactions and engagement.
## `tag` (type: `string`):

Filter to a single Dev.to tag, e.g., 'ai', 'webdev', 'javascript', 'python', 'rust'. Leave blank for all tags.
## `min_reactions` (type: `integer`):

Skip articles with fewer reactions than this. 20 = good signal, 50 = popular, 100 = breakout.
## `max_results` (type: `integer`):

Max results
## `preview_mode` (type: `boolean`):

Preview mode (free, 5 articles)

## Actor input object example

```json
{
  "top_days": 7,
  "tag": "",
  "min_reactions": 10,
  "max_results": 100,
  "preview_mode": false
}
````

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("fetchcraft/devto-top-articles-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("fetchcraft/devto-top-articles-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call fetchcraft/devto-top-articles-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=fetchcraft/devto-top-articles-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Dev.to Top Articles Scraper - Tags, Reactions, Comments",
        "description": "Scrape top dev.to articles by reaction count. Filter by tag (ai, webdev, javascript, python, rust, etc), time window (today, week, month, year), and minimum reactions. Returns title, URL, author, reactions, comments, tags. Useful for tech content research. $0.005 per article. Free preview.",
        "version": "0.1",
        "x-build-id": "E6HVp6wIc0YJ24YiU"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fetchcraft~devto-top-articles-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fetchcraft-devto-top-articles-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/fetchcraft~devto-top-articles-scraper/runs": {
            "post": {
                "operationId": "runs-sync-fetchcraft-devto-top-articles-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/fetchcraft~devto-top-articles-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-fetchcraft-devto-top-articles-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "top_days": {
                        "title": "Top window",
                        "minimum": 1,
                        "maximum": 365,
                        "type": "integer",
                        "description": "How many days back to compute 'top'. 1 = today's top, 7 = this week's top, 30 = this month's top. Dev.to ranks by reactions and engagement.",
                        "default": 7
                    },
                    "tag": {
                        "title": "Tag filter",
                        "type": "string",
                        "description": "Filter to a single Dev.to tag, e.g., 'ai', 'webdev', 'javascript', 'python', 'rust'. Leave blank for all tags.",
                        "default": ""
                    },
                    "min_reactions": {
                        "title": "Minimum reactions",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Skip articles with fewer reactions than this. 20 = good signal, 50 = popular, 100 = breakout.",
                        "default": 10
                    },
                    "max_results": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Max results",
                        "default": 100
                    },
                    "preview_mode": {
                        "title": "Preview mode (free, 5 articles)",
                        "type": "boolean",
                        "description": "Preview mode (free, 5 articles)",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
