
Website Content Crawler
scrape.ly/store/querystone/website-content-crawlerAIDeveloper tools
1 monthly user

Scrape Stack Overflow and any Stack Exchange site through the official API: questions with Markdown bodies, accepted and top answers, comments, authors, related and linked questions, plus RAG-ready Markdown Q&A documents. No login needed.
Get clean Q&A data from Stack Overflow and every other Stack Exchange site (Super User, Server Fault, Ask Ubuntu, Math, Unix & Linux and 170+ more). Each question comes with its Markdown body, the accepted and top-voted answers, optional comments, author details and related or linked questions, plus a ready-to-embed Markdown document for RAG pipelines and AI agents. Uses the official Stack Exchange API: fast, stable, no login.
ragMarkdown: title, metadata, question and answers (accepted first) in one Markdown document with source and license attribution.| Field | What it does |
|---|---|
query | Free-text search in titles and bodies |
startUrls | Question, answer, tag or search URLs, or question ids |
site | Site for the search and tags (stackoverflow, superuser, math, cooking.stackexchange.com, ...) |
tags / excludedTags | Must have all tags / skip these tags |
maxQuestions | Questions to save (default 20) |
sort, acceptedOnly, minScore, minAnswers, fromDate, toDate, titleContains | Filters |
answersMode, maxAnswers | Accepted + top voted (default), accepted only, top only, all, none |
includeComments, includeRelated, includeLinked, includeUserInfo | Extras |
includeRagMarkdown, maxBodyChars | Output options |
{
"query": "web scraping python",
"site": "stackoverflow",
"maxQuestions": 20,
"acceptedOnly": true,
"minScore": 10,
"answersMode": "acceptedAndTop",
"maxAnswers": 3
}
| Field | Meaning |
|---|---|
questionId, site, url, title, tags | Question identity |
score, upVotes, downVotes, viewCount, answerCount, commentCount, favoriteCount | Engagement |
isAnswered, hasAcceptedAnswer, acceptedAnswerId, bountyAmount, closedReason | Status |
creationDate, lastActivityDate, lastEditDate | Dates (ISO) |
author | Display name, reputation, profile URL (plus location, website, badges and counts with author details on) |
questionMarkdown | Question body as Markdown |
acceptedAnswer, answers | Answer id, accepted flag, score, Markdown body, author, dates, URL, license |
questionComments, answers[].comments | Top comments (optional) |
relatedQuestions, linkedQuestions | Title, URL, score, answers (optional) |
ragMarkdown | The whole Q&A as one Markdown document |
license | Content license (CC BY-SA) |
{
"questionId": 2081586,
"site": "stackoverflow",
"url": "https://stackoverflow.com/questions/2081586/web-scraping-with-python",
"title": "Web scraping with Python",
"tags": ["python", "screen-scraping"],
"score": 197,
"answerCount": 10,
"hasAcceptedAnswer": true,
"creationDate": "2010-01-17T16:06:13Z",
"author": {"displayName": "Jane Example", "reputation": 1520, "profileUrl": "https://stackoverflow.com/users/1/example"},
"questionMarkdown": "I'd like to grab daily sunrise/sunset times from a web site. Is it possible to scrape web content with Python? ...",
"acceptedAnswer": {"answerId": 2081600, "isAccepted": true, "score": 192, "markdown": "Use urllib2 in combination with the brilliant BeautifulSoup library: ..."},
"ragMarkdown": "# Web scraping with Python\n\nSource: https://stackoverflow.com/questions/2081586/... | Site: stackoverflow | Score: 197 ...",
"license": "CC BY-SA 2.5"
}
$0.004 per question saved ($4 per 1,000), with its answers, comments, related questions and RAG document included, plus a small amount of platform usage. Example: 1,000 questions with accepted and top answers ≈ $4 plus a few cents of usage.
Do I need an API key or login? No. The scraper uses the public Stack Exchange API without a key.
What about the API quota? Keyless access allows 300 requests per day per IP. One request returns up to 100 questions with all their answers, and the scraper rotates proxy exits when an exit runs low. If every exit is used up, the run stops cleanly with the questions saved so far.
How many questions can I get? As many as the listing has; set maxQuestions to 0 for no limit. Keyless access allows 300 API requests per day per IP, so very large runs rely on the proxy exits rotating. Comments, related and linked questions cost extra API calls (related and linked: one per question), so turn them on only when you need them.
Is it legal to use this data? Stack Exchange content is licensed under CC BY-SA. Keep the attribution (url, license, and the footer in ragMarkdown) when you reuse it.
Why is a field empty? Many questions have no accepted answer, comments or bounty; those fields are null or empty.
Can I schedule it? Yes. Use fromDate with a relative value such as 7 days to fetch new questions every week.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
querystringOptionalSearch query
Free-text search in question titles and bodies (for example: web scraping python). Leave empty to list questions by tags.
startUrlsarrayOptionalQuestion, tag or search URLs
Stack Exchange URLs: questions (https://stackoverflow.com/questions/231767), answers, tag pages (https://superuser.com/questions/tagged/windows) or search pages. Bare question ids work for the selected site.
sitestringOptionalSite
Stack Exchange site for the search and tags: stackoverflow, superuser, serverfault, askubuntu, math, unix, ... or a domain such as cooking.stackexchange.com.
tagsarrayOptionalTags
Questions must have all of these tags (up to 5), for example python and web-scraping.
maxQuestionsintegerOptionaldefault 20Max questions
Maximum number of questions to save in total (0 = no limit).
sortenumOptionalSort by
Order of search and tag results.
acceptedOnlybooleanOptionalOnly questions with an accepted answer
Skip questions without an accepted answer.
minScoreintegerOptionalMinimum score
Skip questions with a lower score (votes).
minAnswersintegerOptionalMinimum answers
Skip questions with fewer answers.
fromDatestringOptionalAsked after
Only questions created on or after this date: YYYY-MM-DD or relative such as '30 days' or '1 year'.
toDatestringOptionalAsked before
Only questions created on or before this date (YYYY-MM-DD).
excludedTagsarrayOptionalExcluded tags
Skip questions with any of these tags.
titleContainsstringOptionalTitle contains
Only questions whose title contains this text.
answersModeenumOptionaldefault "acceptedAndTop"Answers to include
Which answers to save with each question.
maxAnswersintegerOptionalMax answers per question
For the top-voted modes: how many answers to keep (the accepted answer is always kept). Default 3.
includeCommentsbooleanOptionalInclude comments
Add the top comments of each question and answer (one extra API call per 100 posts).
maxCommentsPerPostintegerOptionalMax comments per post
Top-voted comments kept per question or answer. Default 5.
includeRelatedbooleanOptionalInclude related questions
Add questions the site lists as related (one extra API call per question).
includeLinkedbooleanOptionalInclude linked questions
Add questions that link to each question, including duplicates (one extra API call per question).
maxRelatedintegerOptionalMax related / linked per question
Default 5.
includeUserInfobooleanOptionalInclude author details
Add author profiles: location, website, badges, question and answer counts, member since (one extra API call per 100 authors).
includeRagMarkdownbooleanOptionaldefault trueAdd a RAG Markdown document
Add ragMarkdown: title, metadata, question and answers as one clean Markdown document with source attribution, ready to embed.
maxBodyCharsintegerOptionalMax characters per body
Truncate question and answer bodies to this length (0 = full text).
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
The API allows 300 requests per day per IP address without a key. The scraper rotates proxy exits when an exit runs out of quota.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| questionId | number | Question id. |
| site | string | Site API name. |
| url | string | Question URL. |
| title | string | Title. |
| tags | array | Tags. |
| score | number | Score. |
| viewCount | number | Views. |
| answerCount | number | Answers. |
| hasAcceptedAnswer | boolean | Has an accepted answer. |
| creationDate | string | null | Asked (ISO). |
| author | object | null | Asker. |
| questionMarkdown | string | Question body as Markdown. |
| acceptedAnswer | object | null | Accepted answer. |
| answers | array | Selected answers. |
| ragMarkdown | string | null | Question and answers as one Markdown document. |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Question | One question saved with its selected answers, optional comments, related questions and RAG Markdown. | $0.004 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('querystone/stackexchange-scraper').call({
"query": "web scraping python",
"site": "stackoverflow",
"maxQuestions": 20,
"maxAnswers": 3,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run querystone/stackexchange-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=querystone/stackexchange-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Stack Overflow questions with accepted and top answers.
Highest-voted Python questions with an accepted answer.
Questions and answers from another Stack Exchange site.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.