BYTETOOLS

DEV Community API

Free DEV.to API with no key for public content: articles, tags, users and comments from the developer community platform. Tested curl example and live JSON.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-19

What is the DEV Community API?

The DEV Community (dev.to) API is a free API providing public access to articles, tags, users and comments. Reading published articles requires no API key; publishing requires one.

DEV.to's API is refreshingly open for reading: article listings, full content, tags and user profiles are all available unauthenticated. That makes it easy to syndicate your own posts onto a personal site.

For that use case specifically, the `username` filter is the key parameter — request articles by your own username and you have a self-updating blog feed without maintaining a CMS. Articles include both `body_html` and `body_markdown` when requested individually.

Quick facts

Base URL
https://dev.to/api
Authentication
Reading public articles needs no key. Publishing or reading drafts requires an API key in the `api-key` header.
Rate limit
About 3 requests per second for unauthenticated reads.
Pricing
Free.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the DEV Community API

Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.

1. Fetch recent published articles

GET https://dev.to/api/articles?per_page=1

curl
curl 'https://dev.to/api/articles?per_page=1'
JavaScript (fetch)
const res = await fetch("https://dev.to/api/articles?per_page=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://dev.to/api/articles?per_page=1", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
[
  {
    "type_of": "article",
    "id": 4390215,
    "title": "It's always Doom https://ood.dev/posts/doom/",
    "description": "...",
    "readable_publish_date": "Aug 13",
    "slug": "its-always-doom-httpsooddevpostsdoom-4fpi",
    "path": "/ben/its-always-doom-httpsooddevpostsdoom-4fpi",
    "url": "https://dev.to/ben/its-always-doom-httpsooddevpostsdoom-4fpi",
    "comments_count": 0,
    "public_reactions_count": 4,
    "collection_id": null,
    "published_timestamp": "2026-08-13T20:04:27Z",
    "language": "en",
    "subforem_id": 1,
    "ai_disclosure_level": "not_disclosed",
    "ai_disclosure_label": "Not Disclosed",
    "positive_reactions_count": 4,
    "cover_image": null,
    "social_image": "https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpkholdt4jp2vza6zzqvu.png",
    "canonical_url": "https://dev.to/ben/its-always-doom-httpsooddevpostsdoom-4fpi",
    "created_at": "2026-08-13T20:04:27Z",
    "edited_at": null,
    "crossposted_at": null,
    "published_at": "2026-08-13T20:04:27Z",
    "last_comment_at": "2026-08-13T20:04:27Z",
    "reading_time_minutes": 1,
    "tag_list": [
      "gamedev",
      "programming",
      "software"
    ],
    "tags": "gamedev, programming, software",
    "user": {
      "name": "Ben Halpern",
      "username": "ben",
      "twitter_username": "bendhalpern",
      "github_username": "benhalpern",
      "user_id": 1,
      "website_url": "http://benhalpern.com",
      "profile_image": "https://media2.de

Parameters

ParameterTypeRequiredDescription
per_pageintegerOptionalResults per page, max 1000. 30
pageintegerOptionalPage number. 2
tagstringOptionalFilter by a single tag. javascript
usernamestringOptionalArticles by a specific user or organisation. ben
topintegerOptionalMost popular articles from the last N days. 7

Response fields

idinteger
Article identifier.
titlestring
Article title.
descriptionstring
Short summary.
url / canonical_urlstring
DEV URL and the author's canonical URL if set.
cover_imagestring
Header image URL, often null.
tag_listarray
Tags applied to the article.
positive_reactions_countinteger
Reaction count — the engagement signal.
userobject
Author name, username and profile image.

What you can build with the DEV Community API

  • Syndicate your DEV articles onto a personal site or portfolio
  • Build a curated developer reading list by tag
  • Monitor popular posts on a technology for a newsletter
  • Analyse which topics get engagement in the developer community

Common errors and how to fix them

Article body missing from the list

List endpoints return metadata only.

Fix: Fetch /articles/{id} for the full body_html and body_markdown.

429

Exceeded roughly 3 requests per second.

Fix: Throttle and cache; article lists change slowly.

401 for drafts

Unpublished articles require authentication.

Fix: Send your DEV API key in the `api-key` header to access drafts.

DEV Community API — frequently asked questions

Is the DEV.to API free?

Yes, reading public articles requires no API key. Publishing or accessing your drafts needs a free API key from your DEV settings.

How do I show my own DEV posts on my website?

Request /api/articles?username=yourname. That returns your published articles as JSON, giving you a self-updating blog feed with no CMS.

How do I get the full article content?

List endpoints return metadata only. Fetch the individual article at /api/articles/{id} to get body_html and body_markdown.

Can I publish to DEV via the API?

Yes, by POSTing to /api/articles with your API key in the `api-key` header. That also supports scheduling and draft creation.

Tools that pair with this API

DEV Community is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.