crawlbaseDocs
Anmelden

API-Nutzung

Fügen Sie &scraper=stackexchange-serp zu einem Crawling API-Request hinzu. URL-kodieren Sie die Ziel-URL im url-Parameter.

curl 'https://api.crawlbase.com/?token=YOUR_TOKEN' \
  --data-urlencode 'url=https://stackoverflow.com/questions/tagged/web-scraping' \
  --data-urlencode 'scraper=stackexchange-serp' -G
from 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)

Beispiel-Eingabe-URL

Im url-Parameter funktioniert jede Stack Exchange-Liste: eine Tag-, Search- oder Questions-Seite auf jeder Site im Netzwerk. Zum Beispiel:

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

Response-Struktur

JSON-Response-Body. Feldtypen können null sein, wenn die Quellseite den Wert nicht enthält.

site
string
Stack Exchange Site, von der die Ergebnisse stammen (zum Beispiel stackoverflow).
query
string
Suchanfrage oder Tag, die diese Ergebnisse erzeugt hat.
tag
string | null
Tag, auf das die Liste beschränkt war, oder null, wenn es sich nicht um eine Tag-Seite handelt.
sort
string
Auf die Liste angewandte Sortierreihenfolge (zum Beispiel newest, votes, active).
currentPage
integer
Seitennummer der aktuell zurückgegebenen Liste (1-basiert).
totalQuestions
integer | null
Gesamtzahl der zur Liste passenden Fragen, oder null, wenn die Seite die Anzahl nicht enthält.
results
array
Fragen auf dieser Seite, in Listenreihenfolge.
results[].position
integer
Position der Frage in der zurückgegebenen Liste (1-basiert).
results[].id
string
Stack Exchange Fragen-ID.
results[].title
string
Fragetitel.
results[].questionUrl
string
Kanonische URL der Frage.
results[].score
integer
Fragen-Score (Upvotes minus Downvotes).
results[].answerCount
integer
Anzahl der Antworten auf die Frage.
results[].viewCount
integer
Anzahl der Aufrufe der Frage.
results[].hasAcceptedAnswer
boolean
True, wenn die Frage eine akzeptierte Antwort hat.
results[].excerpt
string
Kurzer Auszug des Fragetexts.
results[].tags
array
Auf die Frage angewandte Tags.
results[].author
string
Anzeigename des Fragenautors.
results[].authorUrl
string
Profil-URL des Fragenautors.
results[].askedAt
string
Erstellungszeit der Frage (ISO 8601).
resultCount
integer
Anzahl der in results zurückgegebenen Ergebnisse.
pagination
object
Pagination-Cursor für die nächste Seite.
pagination.currentPage
integer
Seitennummer, die diese Response abdeckt (1-basiert).
pagination.nextPageUrl
string | null
URL für die nächste Seite mit Ergebnissen oder null auf der letzten Seite.
pagination.hasNext
boolean
True, wenn eine nächste Seite verfügbar ist.

Beispiel-Response

{
  "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
  }
}