Вопросы Stack Exchange
Разбирайте страницу вопросов, тега или результатов поиска Stack Exchange в структурированный JSON с заголовком каждого вопроса, счётом, количеством ответов и просмотров, тегами, отрывком, автором и пагинацией.
Использование API
Добавьте &scraper=stackexchange-serp к запросу Crawling API. URL-кодируйте целевой URL в параметре url.
curl 'https://api.crawlbase.com/?token=YOUR_TOKEN' \
--data-urlencode 'url=https://stackoverflow.com/questions/tagged/web-scraping' \
--data-urlencode 'scraper=stackexchange-serp' -Gfrom crawlbase import CrawlingAPI
api = CrawlingAPI({'token': 'YOUR_TOKEN'})
res = api.get(
'https://stackoverflow.com/questions/tagged/web-scraping',
{'scraper': 'stackexchange-serp'}
)
import json
data = json.loads(res['body'])const { CrawlingAPI } = require('crawlbase');
const api = new CrawlingAPI({ token: 'YOUR_TOKEN' });
const res = await api.get(
'https://stackoverflow.com/questions/tagged/web-scraping',
{ scraper: 'stackexchange-serp' }
);
const data = JSON.parse(res.body);require 'crawlbase'
api = Crawlbase::API.new(token: 'YOUR_TOKEN')
res = api.get('https://stackoverflow.com/questions/tagged/web-scraping', scraper: 'stackexchange-serp')
data = JSON.parse(res.body)Пример входного URL
В параметре url работает любой список Stack Exchange: страница тега, поиска или вопросов на любом сайте сети. Например:
https://stackoverflow.com/questions/tagged/web-scraping
https://superuser.com/search?q=ssh+tunnel
https://askubuntu.com/questions?tab=Votes
https://unix.stackexchange.com/questions/tagged/bash
https://mathoverflow.net/questionsСтруктура ответа
Тело ответа в формате JSON. Типы полей могут быть null, если исходная страница не содержит значения.
Сайт Stack Exchange, с которого получены результаты (например,
stackoverflow).Поисковый запрос или тег, по которому получены эти результаты.
Тег, которым был ограничен список, или null, если это не страница тега.
Порядок сортировки, применённый к списку (например,
newest, votes, active).Номер страницы текущего возвращённого списка (начиная с 1).
Общее количество вопросов, соответствующих списку, или null, если страница не содержит счётчика.
Вопросы на этой странице, в порядке списка.
Позиция вопроса в возвращённом списке (начиная с 1).
Идентификатор вопроса Stack Exchange.
Заголовок вопроса.
Канонический URL вопроса.
Счёт вопроса (плюсы минус минусы).
Количество ответов на вопрос.
Количество просмотров вопроса.
True, если у вопроса есть принятый ответ.
Короткий отрывок тела вопроса.
Теги, применённые к вопросу.
Отображаемое имя автора вопроса.
URL профиля автора вопроса.
Время создания вопроса (ISO 8601).
Количество результатов, возвращённых в
results.Курсор пагинации для следующей страницы.
Номер страницы, которую охватывает этот ответ (начиная с 1).
URL следующей страницы результатов или null на последней странице.
True, если доступна следующая страница.
Пример ответа
{
"site": "stackoverflow.com",
"query": "web scraping infinite scroll pagination",
"tag": null,
"sort": "Relevance",
"currentPage": 1,
"totalQuestions": null,
"results": [
{
"position": 1,
"id": "78912345",
"title": "How to handle pagination when scraping an infinite scroll page?",
"questionUrl": "https://stackoverflow.com/questions/78912345/how-to-handle-pagination-when-scraping-an-infinite-scroll-page",
"score": 4,
"answerCount": 2,
"viewCount": 137,
"hasAcceptedAnswer": true,
"excerpt": "I'm trying to scrape a product listing that loads more items as you scroll. The network tab shows a POST request returning JSON, but the cursor token keeps changing...",
"tags": ["python", "web-scraping", "pagination", "requests"],
"author": "dev_ana",
"authorUrl": "https://stackoverflow.com/users/1234567/dev-ana",
"askedAt": "2026-07-15T09:42:11Z"
},
{
"position": 2,
"id": "78911002",
"title": "Rotating proxies with residential IPs to avoid rate limiting",
"questionUrl": "https://stackoverflow.com/questions/78911002/rotating-proxies-with-residential-ips-to-avoid-rate-limiting",
"score": 1,
"answerCount": 0,
"viewCount": 42,
"hasAcceptedAnswer": false,
"excerpt": "My crawler gets blocked after roughly 500 requests from a datacenter IP. I want to rotate through a residential proxy pool but I'm unsure how to detect a soft ban...",
"tags": ["web-scraping", "proxy", "http"],
"author": "crawler_joe",
"authorUrl": "https://stackoverflow.com/users/9988776/crawler-joe",
"askedAt": "2026-07-15T08:05:47Z"
}
],
"resultCount": 2,
"pagination": {
"currentPage": 1,
"nextPageUrl": "https://stackoverflow.com/search?q=web+scraping+infinite+scroll+pagination&tab=Relevance&page=2",
"hasNext": true
}
}