Stack Exchange API
Free Stack Exchange API with no key: questions, answers, users, tags and search across Stack Overflow and 170+ sites. Tested curl example and live JSON.
Endpoint tested and returned HTTP 200 on 19 Aug 2026
What is the Stack Exchange API?
The Stack Exchange API provides free, key-free access to questions, answers, comments, users and tags across Stack Overflow and every other Stack Exchange site, with search and filtering.
One API covers the entire Stack Exchange network — Stack Overflow, Server Fault, Super User and over 170 others — selected with a single `site` parameter. Anonymous access works, though registering a free app key raises the daily quota considerably.
Two implementation details matter. Responses are gzip-compressed by default and most HTTP clients handle that transparently, but a raw socket client will see binary. And the default `filter` returns a trimmed field set — question bodies are excluded unless you request a filter that includes them.
Quick facts
- Base URL
https://api.stackexchange.com/2.3- Authentication
- Anonymous access allowed. A free app key raises the daily quota from 300 to 10,000 requests.
- Rate limit
- 300 requests per day per IP anonymously; 10,000 per day with a free key.
- Pricing
- Free. Content is CC BY-SA licensed and attribution is required.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Stack Exchange API
Every request below was executed against the live API on 19 Aug 2026, and the response shown is the real body it returned — not an illustration.
1. Fetch recent Stack Overflow questions
GET https://api.stackexchange.com/2.3/questions?site=stackoverflow&pagesize=1&order=desc&sort=activity
curl 'https://api.stackexchange.com/2.3/questions?site=stackoverflow&pagesize=1&order=desc&sort=activity'const res = await fetch("https://api.stackexchange.com/2.3/questions?site=stackoverflow&pagesize=1&order=desc&sort=activity");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.stackexchange.com/2.3/questions?site=stackoverflow&pagesize=1&order=desc&sort=activity", timeout=20)
res.raise_for_status()
print(res.json()){
"items": [
{
"tags": [
"android",
"shell",
"automation",
"adb"
],
"owner": {
"account_id": 1631142,
"reputation": 131,
"user_id": 1505650,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/f050b80594d5d59676e0620842eb0316?s=256&d=identicon&r=PG",
"display_name": "HaroldT",
"link": "https://stackoverflow.com/users/1505650/haroldt"
},
"is_answered": true,
"view_count": 19270,
"accepted_answer_id": 11398427,
"answer_count": 5,
"score": 7,
"last_activity_date": 1787171265,
"creation_date": 1341545159,
"question_id": 11355417,
"content_license": "CC BY-SA 3.0",
"link": "https://stackoverflow.com/questions/11355417/android-notifications-through-adb",
"title": "Android Notifications through ADB"
}
],
"has_more": true,
"quota_max": 300,
"quota_remaining": 298
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
site | string | Required | Which network site to query. stackoverflow |
pagesize | integer | Optional | Results per page, max 100. 20 |
order / sort | string | Optional | asc or desc, and activity, votes, creation or relevance. desc |
tagged | string | Optional | Semicolon-separated tags to filter by. python;pandas |
filter | string | Optional | Field filter — the default omits question bodies. withbody |
Response fields
itemsarray- The results array.
items[].titlestring- Question title.
items[].tagsarray- Tags applied to the question.
items[].scoreinteger- Net vote score.
items[].is_answeredboolean- Whether an answer has been accepted.
items[].linkstring- Canonical URL — required for CC BY-SA attribution.
quota_remaininginteger- Requests left in your daily quota.
has_moreboolean- Whether further pages exist.
What you can build with the Stack Exchange API
- Show recent questions for a tag on a documentation site
- Monitor unanswered questions about your library
- Analyse technology trends from tag activity
- Build a developer Q&A search across the network
Common errors and how to fix them
400 without site
The `site` parameter is mandatory on almost every endpoint.
Fix: Always pass site=stackoverflow or another network site.
throttle_violation
Daily quota exhausted or requests sent too rapidly.
Fix: Register a free app key for 10,000/day, and watch `quota_remaining` in each response.
Question body missing
The default filter excludes bodies to keep responses small.
Fix: Pass filter=withbody to include them.
Stack Exchange API — frequently asked questions
Does the Stack Exchange API need an API key?
No, anonymous access works, but it is limited to 300 requests per day per IP. Registering a free app key raises that to 10,000.
Why is the question body missing from my results?
The default filter trims responses to keep them small. Pass filter=withbody to include question and answer bodies.
Can I query sites other than Stack Overflow?
Yes. The `site` parameter selects from over 170 network sites — serverfault, superuser, askubuntu and the rest all use the same API.
Do I need to attribute content from the API?
Yes. Stack Exchange content is CC BY-SA licensed, so you must attribute the author and link back to the original post using the `link` field.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Markdown to HTML Converter
Convert Markdown to clean HTML with a live preview — headings, emphasis, links, lists, code blocks, tables and blockquotes. 100% in your browser.
Alternatives to Stack Exchange API
If Stack Exchange does not fit, these developer & testing apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| GitHub REST API | GitHub REST API with no key for public data: repository details, users, issues, releases and commits. 60 req/hour unauthenticated, 5,000 with a token. | No key | Yes | 19 Aug 2026 |
| JSONPlaceholder | Free fake REST API for testing and prototyping. Posts, comments, users and todos with full GET, POST, PUT and DELETE support. No key. Real curl examples. | No key | Yes | 19 Aug 2026 |
| Postman Echo | Postman Echo reflects your HTTP request back as JSON: headers, body, query params and auth. Free, no key, ideal for debugging clients. Real POST example. | No key | No | 19 Aug 2026 |
| DummyJSON | Free fake REST API with realistic products, users, carts, recipes and auth. Supports search, pagination, sorting and POST. No key. Tested GET and POST examples. | No key | Yes | 19 Aug 2026 |
| Swagger Validator | Free Swagger/OpenAPI validator API with no key: check any OpenAPI or Swagger specification for schema errors by URL. Returns structured messages. Tested. | No key | Yes | 20 Aug 2026 |
| Terraform Registry | Query the public Terraform Registry for modules and providers, with versions, download counts and source repositories. No API key. Verified example included. | No key | No | 21 Aug 2026 |
Stack Exchange is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 19 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.