curl --request GET \
--url https://api.spidra.io/api/scrape-logs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.spidra.io/api/scrape-logs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.spidra.io/api/scrape-logs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.spidra.io/api/scrape-logs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.spidra.io/api/scrape-logs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.spidra.io/api/scrape-logs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.spidra.io/api/scrape-logs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"logs": [
{
"uuid": "54ec8875-c92c-40cc-8fb6-ba3f6d68c0ee",
"status": "success",
"started_at": "2026-10-24T19:29:01.000Z",
"finished_at": "2026-10-24T19:29:11.000Z",
"error_message": "",
"urls": [
{
"url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
"actions": []
}
],
"extraction_prompt": "Extract the book details",
"input_tokens": 571,
"output_tokens": 23,
"tokens_used": 594,
"captcha_solved_count": 0,
"scraped_sites_count": 1,
"ai_output_format": "json",
"latency_ms": 9846,
"credits_used": 2,
"use_proxy": 1,
"proxy_country": "ng",
"scrape_mode": "default",
"extract_content_only": 0,
"schema_json": "{\"type\":\"object\",\"required\":[\"title\",\"price\"],\"properties\":{\"title\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"},...}}",
"screenshot": 0,
"full_page_screenshot": 0,
"page_title": "A Light in the Attic | Books to Scrape - Sandbox"
},
{
"uuid": "13fcab8f-5920-4a3a-a100-6fb764543827",
"status": "success",
"started_at": "2026-10-24T19:28:20.000Z",
"finished_at": "2026-10-24T19:28:57.000Z",
"error_message": "",
"urls": [
{
"url": "https://books.toscrape.com",
"actions": []
}
],
"extraction_prompt": "Return the title and price of every book on the page",
"input_tokens": 2628,
"output_tokens": 418,
"tokens_used": 3046,
"captcha_solved_count": 0,
"scraped_sites_count": 1,
"ai_output_format": "json",
"latency_ms": 37458,
"credits_used": 3,
"use_proxy": 1,
"proxy_country": "ng",
"scrape_mode": "default",
"extract_content_only": 0,
"schema_json": null,
"screenshot": 0,
"full_page_screenshot": 0,
"page_title": "All products | Books to Scrape - Sandbox"
}
],
"total": 3437
}
}List scrape logs
Lists your past scrapes, newest first, with their settings, tokens and credits. Every scrape is logged, including each URL of a batch, and logs are kept after the job itself expires.
The list leaves out results. Get one with Get a scrape log. A log’s uuid isn’t the scrape’s jobId.
curl --request GET \
--url https://api.spidra.io/api/scrape-logs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.spidra.io/api/scrape-logs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.spidra.io/api/scrape-logs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.spidra.io/api/scrape-logs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.spidra.io/api/scrape-logs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.spidra.io/api/scrape-logs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.spidra.io/api/scrape-logs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"logs": [
{
"uuid": "54ec8875-c92c-40cc-8fb6-ba3f6d68c0ee",
"status": "success",
"started_at": "2026-10-24T19:29:01.000Z",
"finished_at": "2026-10-24T19:29:11.000Z",
"error_message": "",
"urls": [
{
"url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
"actions": []
}
],
"extraction_prompt": "Extract the book details",
"input_tokens": 571,
"output_tokens": 23,
"tokens_used": 594,
"captcha_solved_count": 0,
"scraped_sites_count": 1,
"ai_output_format": "json",
"latency_ms": 9846,
"credits_used": 2,
"use_proxy": 1,
"proxy_country": "ng",
"scrape_mode": "default",
"extract_content_only": 0,
"schema_json": "{\"type\":\"object\",\"required\":[\"title\",\"price\"],\"properties\":{\"title\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"},...}}",
"screenshot": 0,
"full_page_screenshot": 0,
"page_title": "A Light in the Attic | Books to Scrape - Sandbox"
},
{
"uuid": "13fcab8f-5920-4a3a-a100-6fb764543827",
"status": "success",
"started_at": "2026-10-24T19:28:20.000Z",
"finished_at": "2026-10-24T19:28:57.000Z",
"error_message": "",
"urls": [
{
"url": "https://books.toscrape.com",
"actions": []
}
],
"extraction_prompt": "Return the title and price of every book on the page",
"input_tokens": 2628,
"output_tokens": 418,
"tokens_used": 3046,
"captcha_solved_count": 0,
"scraped_sites_count": 1,
"ai_output_format": "json",
"latency_ms": 37458,
"credits_used": 3,
"use_proxy": 1,
"proxy_country": "ng",
"scrape_mode": "default",
"extract_content_only": 0,
"schema_json": null,
"screenshot": 0,
"full_page_screenshot": 0,
"page_title": "All products | Books to Scrape - Sandbox"
}
],
"total": 3437
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
The page to return, starting at 1.
x >= 1Logs per page, from 1 to 100. Higher values are capped at 100.
1 <= x <= 100Only return logs with this status. all returns every status.
all, success, error, in_progress Only return scrapes whose URLs contain this text.
Only return scrapes from this channel. api is scrapes sent with an API key, and playground is scrapes run from the dashboard. all returns both.
all, api, playground Only return scrapes started at or after this date, as YYYY-MM-DD.
Only return scrapes started at or before this date, as YYYY-MM-DD.
Was this page helpful?

