The Spidra API gives you programmatic access to web data. All endpoints share a common base URL, authentication scheme, and response format described on this page.
Features
Scrape Extract content from any webpage with browser automation and AI processing.
Batch Scrape Queue up to 50 URLs in one request and collect per-item results in parallel.
Crawl Crawl entire websites and extract structured data from every page.
Base URL
All API requests use this base URL:
https://api.spidra.io/api
Authentication
Include your API key in the standard Authorization: Bearer header.
curl -X POST https://api.spidra.io/api/scrape \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"urls": [{"url": "https://example.com"}]}'
import requests
response = requests.post(
"https://api.spidra.io/api/scrape" ,
headers = { "Authorization" : "Bearer YOUR_API_KEY" },
json = { "urls" : [{ "url" : "https://example.com" }]}
)
const response = await fetch ( "https://api.spidra.io/api/scrape" , {
method: "POST" ,
headers: {
Authorization: "Bearer YOUR_API_KEY" ,
"Content-Type" : "application/json"
},
body: JSON . stringify ({ urls: [{ url: "https://example.com" }] })
});
Get your API key from app.spidra.io → Settings → API Keys.
Keep your API key secret. Never expose it in frontend code.
Response Codes
Code Meaning What it indicates 200OK Request completed successfully 202Accepted Job queued. Poll the status endpoint for results 400Bad Request Missing or invalid parameters in the request body 401Unauthorized API key is missing, invalid, or expired 403Forbidden Credits exhausted or plan limit reached 404Not Found The job or resource does not exist 429Too Many Requests Rate limit hit. Wait and retry with backoff 500Server Error Something went wrong on our end
All errors return this structure:
{
"status" : "error" ,
"message" : "Detailed error explanation"
}