crawlbaseDocs
Se connecter

Utilisation de l'API

Ajoutez &scraper=stackexchange-serp à une requête Crawling API. Encodez en URL l'URL cible dans le paramètre url.

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)

Exemple d'URL en entrée

N'importe quelle liste Stack Exchange fonctionne dans le paramètre url : une page de tag, de recherche ou de questions sur n'importe quel site du réseau. Par exemple :

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

Structure de la réponse

Corps de la réponse JSON. Les types de champs peuvent être null lorsque la page source omet la valeur.

site
string
Site Stack Exchange dont proviennent les résultats (par exemple stackoverflow).
query
string
Requête de recherche ou tag qui a produit ces résultats.
tag
string | null
Tag auquel la liste était limitée, ou null lorsqu'il ne s'agit pas d'une page de tag.
sort
string
Ordre de tri appliqué à la liste (par exemple newest, votes, active).
currentPage
integer
Numéro de la page de la liste actuellement renvoyée (à partir de 1).
totalQuestions
integer | null
Nombre total de questions correspondant à la liste, ou null lorsque la page omet le compte.
results
array
Questions de cette page, dans l'ordre de la liste.
results[].position
integer
Position de la question dans la liste renvoyée (à partir de 1).
results[].id
string
Identifiant de la question Stack Exchange.
results[].title
string
Titre de la question.
results[].questionUrl
string
URL canonique de la question.
results[].score
integer
Score de la question (upvotes moins downvotes).
results[].answerCount
integer
Nombre de réponses à la question.
results[].viewCount
integer
Nombre de vues de la question.
results[].hasAcceptedAnswer
boolean
True lorsque la question a une réponse acceptée.
results[].excerpt
string
Court extrait du corps de la question.
results[].tags
array
Tags appliqués à la question.
results[].author
string
Nom affiché de l'auteur de la question.
results[].authorUrl
string
URL du profil de l'auteur de la question.
results[].askedAt
string
Heure de création de la question (ISO 8601).
resultCount
integer
Nombre de résultats renvoyés dans results.
pagination
object
Curseur de pagination pour la page suivante.
pagination.currentPage
integer
Numéro de page couvert par cette réponse (à partir de 1).
pagination.nextPageUrl
string | null
URL de la page suivante de résultats, ou null sur la dernière page.
pagination.hasNext
boolean
True lorsqu'une page suivante est disponible.

Exemple de réponse

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