Dev.to API. Developer writing as JSON.
Posts, full article bodies, comments, profiles, organizations, tags and the home feed from Dev.to, in one JSON shape with one API key.
- 21 routes
- Full post bodies
- 1 credit per request
- Failed requests aren't charged
Teams running monitoring, research, and enrichment pipelines
Why Social Fetch
Dev.to data as JSON. You build the product.
Live Dev.to data in one response shape, with platform changes handled for you.
Dev.to, plus every other platform
One key and one response envelope for Dev.to and 56 more platforms.
Pricing you can reason about
One request, one credit. Know how far your balance will go before you run your next batch.
Live data on every request
Fetch public data when you ask for it.
Nothing to maintain
We handle platform changes and breakages.
Built for production jobs
Run concurrent workloads with explicit statuses and request IDs.
Regular jobs. Better rates.
Running lookups every month? Get lower per-credit rates with a monthly plan. For occasional projects, choose pay as you go.
What Dev.to data can you get?
21 endpoints, one API key. Every response comes back as live JSON in the same envelope.
- +2 more posts endpoints
Posts
- +1 more people endpoints
People
- +4 more discover endpoints
Discover
Podcasts
Browse all 21 Dev.to endpoints
Posts
People
Discover
Podcasts
What teams build with Dev.to data
Monitoring, enrichment, research and content workflows on Dev.to data, on the same API as every other platform.
How it works
Your first request in three steps.
Use TypeScript or your automation tool of choice.
Sources
+ 51 more platforms
One request
GET/v1/tiktok/profiles/
x-api-key: sk_live_••••••••
Same JSON shape
{
"data": {
"lookupStatus": "found",
"profile": {
"platform": "tiktok",
"handle": "charlidamelio",
"displayName": "charli d’amelio",
"verified": true
},
"metrics": {
"followers": 160263648
}
}
}Step 1
Create your free account
Get an API key with 100 requests included.
Step 2
Choose an endpoint
Pass a username, URL, keyword, or post ID.
Step 3
Get clean JSON
Use the response immediately or send it into your pipeline.
Works with your stack
Code, automate, or connect your AI.
TypeScript
n8n
- Make
- Apify
- MCP
- AI clients
Pricing
Social data, priced simply.
Start with 100 free credits. Monthly plans give you predictable volume and lower per-request rates.
Starter
18,000credits
$1.61 per 1k · $0.00161 per request
- Top up from $1.61 / 1k if you run out
- Up to 25 monitors
Growth
50,000credits
$1.58 per 1k · $0.00158 per request
- Top up from $1.58 / 1k if you run out
- 5 team seats
- Up to 100 monitors
Scale
150,000credits
$1.50 per 1k · $0.00150 per request
- Top up from $1.50 / 1k if you run out
- 25 team seats
- Up to 250 monitors
- Cancel anytime
- 30-day money-back guarantee
- Price locked while you stay
Need 1M+ credits, invoicing, or volume rates? Talk to us
Trust signals
DevHunt
Product Hunt
Uneed
Customers
Teams building on Social Fetch.
“Our TikTok and Instagram scrapers broke constantly. Social Fetch took us off that rotation — we ship product again.”
“Transcripts at volume from one endpoint. No broken scrapers for our small team to maintain.”
“Live profile data on every request. We never flag accounts from a stale cache.”
“Heavy concurrent load, no rate limits to negotiate. The rare API I haven't wrapped in retries.”
Dev.to API: common questions
What can I do with the Dev.to API?
Read posts and their full bodies, search posts, collect comment threads, look up users and organizations, list tags and tag details, follow trends, read the home and popular feeds, list video posts and podcast episodes, list events, and list communities. There are 21 routes under /v1/dev-to.
How do I fetch one post by URL or id?
Send exactly one of id or url to GET /v1/dev-to/article, for example id=207638 or url=https://dev.to/lydiahallie/javascript-visualized-event-loop-3dif. The response has lookupStatus and, when found, article with bodyHtml and bodyMarkdown.
How far can I page and how many rows can I ask for?
page is 1 to 1000 on the list routes and 1 to 2000 on the feed; limit is 1 to 1000, with a default of 30. Each page is billed as its own request, so a large limit is one request rather than many. The page block returns page, hasMore and nextPage; a page past the end is an empty list with hasMore false.
How do comment threads work?
GET /v1/dev-to/article/comments returns a flat list in reading order: each top-level comment followed by its replies. Use parentId and depth to rebuild the tree. topLevelCount counts the top-level comments in the response, and replies are not counted against limit.
What is the difference between article and article/details?
GET /v1/dev-to/article returns the post with its full body. GET /v1/dev-to/article/details returns page-only extras: isPublished, isScheduled, coAuthorIds, the series and its parts, and commentsOnPage with numeric ids and reaction counts. Add details only when you need those fields.
Can I combine article filters?
Only tag with top. Dev.to applies one of tag, username, state or seriesId and ignores the rest, so Social Fetch refuses combinations that would silently drop a filter. sort=latest is accepted only on the unfiltered feed.
How do I get a user's posts?
Send username to GET /v1/dev-to/articles, for example username=ben. The list is newest first and cannot be combined with other filters. Use GET /v1/dev-to/user for the account and GET /v1/dev-to/user/profile for the page details.
Why is a field sometimes null?
Some fields are optional on Dev.to. Organization memberCount, postsPublished and isVerified are null when the count is unavailable, profile counts are null when the profile page is hidden, and a podcast audioUrl can be null when the episode has no audio file. A pinned post with no reaction or comment count, and a repository that shows a language but no star count, return 0. Null means unavailable, not zero.
Does HTTP 200 mean the post exists?
No. HTTP 200 means the request finished. For lookups, check data.lookupStatus: not_found means the post, user, tag, organization, episode or trend does not exist. Lists use an empty array with the same rule where the contract says so.
Can I use Dev.to routes from agents or MCP?
Yes. Every Dev.to route is available through the hosted MCP server and through Ask (POST /v1/ask) in plain English. Use the typed routes for production jobs, where lookupStatus and the page block are explicit.
The Dev.to API in detailHow the Dev.to routes work, what they cost, and how they differ from the official API.
Why teams use Social Fetch for Dev.to
Social Fetch covers Dev.to with 21 routes under /v1/dev-to, all on the same { data, meta } envelope. /v1/dev-to/articles lists the front page, a tag, a user, a series or the most-reacted posts of the last N days. /v1/dev-to/articles/search searches titles, tags and bodies with a query, and /v1/dev-to/article returns one post with bodyHtml and bodyMarkdown.
People have their own routes. /v1/dev-to/user gives the basic account, /v1/dev-to/user/profile adds postsPublished, commentsWritten, tagsFollowed, badges, pinnedPosts and githubRepositories, while /v1/dev-to/organization and /v1/dev-to/organization/members cover teams. Comments come back in reading order with parentId and depth, so you can rebuild a thread from one flat list, and /v1/dev-to/comment returns one comment with its replies.
The catalog routes help you decide what to read next: /v1/dev-to/tags, /v1/dev-to/tag, /v1/dev-to/trends, /v1/dev-to/trend, /v1/dev-to/feed, /v1/dev-to/videos, /v1/dev-to/podcast/episodes, /v1/dev-to/podcast/episode, /v1/dev-to/events and /v1/dev-to/communities. Lookups answer HTTP 200 with data.lookupStatus set to found or not_found, and every list carries a page block with page, hasMore and nextPage.
How to call the Dev.to API
1. Create an API key
Sign up at Social Fetch and copy a key (
sfk_...). New accounts get 100 free credits, enough to try every Dev.to route several times.2. Pick a route and send it
Use
GET /v1/dev-to/article?id=207638for one post,GET /v1/dev-to/articles?tag=rustfor a tag, orGET /v1/dev-to/user/profile?username=heyitsjemfor a profile. Sendx-api-keyon every request.3. Branch and page
For a lookup, check
data.lookupStatusbefore storing a row. For a list, readdata.page.nextPagewhilehasMoreis true.meta.creditsChargedon each response is the billing record.
What each Dev.to route returns
- Posts with
title,tags,reactionsCount,commentsCount,readingTimeMinutes,publishedAtand theauthor. - Full post bodies as
bodyHtmlandbodyMarkdownfrom the single-post route. - Keyword search with
query, an optionaltopwindow, andlimitup to 1000. - Flat comment lists in reading order with
parentId,depthandtopLevelCount. - Profiles with counts, badges, pinned posts and the public repositories the user chose to show.
- Organizations with
memberCount,postsPublished,techStack,locationandcontactEmail.
How much does the Dev.to API cost?
Every Dev.to route charges a flat credit amount per completed request, shown on each endpoint page. Each page of a list is its own request and its own credit. Credits do not expire on pay-as-you-go packs, and meta.creditsCharged on every response is the billing source of truth.
Social Fetch vs the official Dev.to API
Dev.to publishes its own API. Social Fetch adds one response envelope shared with every other platform, typed lookupStatus results, page blocks on lists, and consistent field names across routes. The extras that live outside the plain post payload, such as profile counts, pinned posts, tag guidelines, series navigation, comment reaction counts and the home feed with its top comments, arrive in the same shape as the rest, so a job that mixes them does not need a second parser. A missing post, user, tag, organization, episode or trend comes back as not_found data, not as an HTTP error.
Pull your first Dev.to data.
Run a live Dev.to request in the playground. 100 free credits, no card, JSON back in seconds.
No credit cardSign up in 30 seconds withGoogleGitHub