Get Results
curl --request GET \
--url https://api.lobstr.io/v1/results \
--header 'Authorization: <authorization>'import requests
url = "https://api.lobstr.io/v1/results"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.lobstr.io/v1/results', 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.lobstr.io/v1/results",
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: <authorization>"
],
]);
$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.lobstr.io/v1/results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
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.lobstr.io/v1/results")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lobstr.io/v1/results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"total_results": 123,
"limit": 123,
"page": 123,
"total_pages": 123,
"result_from": 123,
"result_to": 123,
"next": {},
"previous": {},
"data": [
{}
],
"data[].id": "<string>",
"data[].object": "<string>",
"data[].squid": "<string>",
"data[].run": "<string>",
"data[].scraping_time": "<string>"
}Result
Get Results
Retrieve scraped data from a squid or specific run
GET
/
v1
/
results
Get Results
curl --request GET \
--url https://api.lobstr.io/v1/results \
--header 'Authorization: <authorization>'import requests
url = "https://api.lobstr.io/v1/results"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.lobstr.io/v1/results', 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.lobstr.io/v1/results",
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: <authorization>"
],
]);
$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.lobstr.io/v1/results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
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.lobstr.io/v1/results")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lobstr.io/v1/results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"total_results": 123,
"limit": 123,
"page": 123,
"total_pages": 123,
"result_from": 123,
"result_to": 123,
"next": {},
"previous": {},
"data": [
{}
],
"data[].id": "<string>",
"data[].object": "<string>",
"data[].squid": "<string>",
"data[].run": "<string>",
"data[].scraping_time": "<string>"
}This endpoint retrieves a paginated list of results (scraped data) produced by a squid. You can query results for an entire squid or filter to a specific run and/or task.
Important: You must supply either the
squid hash OR a specific run hash — not both.
Headers
string
required
Your API authentication token. Value:
Token YOUR_API_KEYQuery Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| squid | string | One of* | Hash of the squid. Returns all results across all runs if run is omitted |
| run | string | One of* | Hash of the run. Returns results from that single execution only |
| task | string | No | Hash of a specific task. Filters results to just that task |
| page | integer | No | Page number to fetch (1-indexed). Default: 1 |
| page_size | integer | No | Number of results per page. Default: 10, Max: 100 |
Response Field Explanations
integer
Total number of result records available. Example:
156integer
Number of results per page (matches the
page_size param). Example: 50integer
Current page number. Example:
1integer
Total number of pages available. Example:
4integer
1-based index of the first record in this page. Example:
1integer
1-based index of the last record in this page. Example:
50string | null
Full URL to fetch the next page (null if last page). Example:
"https://api.lobstr.io/v1/results?squid=...&page=2"string | null
Full URL to fetch the previous page (null if first page). Example:
nullarray
Array of result objects. Schema varies by crawler type. Example:
[...]string
Unique result identifier. Example:
"b4af52b85c45661828d61980c167054b"string
Always “result”. Example:
"result"string
Squid that produced this result. Example:
"b6c56d18cb0046949461ba9ca278e8ad"string
Run that produced this result. Example:
"300e9c5c127d421c90f431478d9a2cfb"string
When this result was scraped (ISO 8601). Example:
"2025-02-10T14:31:05.487Z"Result Data Schema
The fields within each result object depend on the crawler used. For example, a Google Maps crawler returns fields likename, address, phone, website, ratings, score, etc., while a LinkedIn crawler returns different fields.
Use the Get Crawler Details endpoint to understand what fields your specific crawler returns.
Use the
next URL to automatically paginate through all results until it returns null.Result schemas vary by crawler. The fields returned depend on what data the crawler extracts.
You must provide either
squid OR run — providing both or neither will result in an error.For large result sets, increase page_size to 100 to reduce the number of API calls needed.
Code Examples
curl -X GET "https://api.lobstr.io/v1/results?squid=b6c56d18cb0046949461ba9ca278e8ad&page=1&page_size=50" \
-H "Authorization: Token YOUR_API_KEY"
import requests
url = "https://api.lobstr.io/v1/results"
headers = {
"Authorization": "Token YOUR_API_KEY"
}
params = {
"squid": "b6c56d18cb0046949461ba9ca278e8ad",
# OR use "run": "run_hash" to get results from a specific run
"page": 1,
"page_size": 50
}
# Fetch all results with pagination
all_results = []
while True:
response = requests.get(url, headers=headers, params=params)
data = response.json()
all_results.extend(data['data'])
print(f"Fetched page {data['page']} of {data['total_pages']}")
if data['next'] is None:
break
# Use the next URL directly for subsequent requests
url = data['next']
params = {} # Clear params as they're in the URL
print(f"\nTotal results collected: {len(all_results)}")
# Process results
for result in all_results[:5]: # Show first 5
print(f"- {result.get('name', 'N/A')}: {result.get('address', 'N/A')}")
Response
200
{
"total_results": 156,
"limit": 50,
"page": 1,
"total_pages": 4,
"result_from": 1,
"result_to": 50,
"data": [
{
"id": "b4af52b85c45661828d61980c167054b",
"object": "result",
"squid": "b6c56d18cb0046949461ba9ca278e8ad",
"run": "300e9c5c127d421c90f431478d9a2cfb",
"name": "1860 Le Palais",
"address": "9 La Canebière Vieux Port, 13001 Marseille, France",
"phone": "+33491995484",
"website": "https://www.1860lepalais.fr/",
"category": "French restaurant, Brunch restaurant, Mediterranean restaurant",
"score": 4.4,
"ratings": 1220,
"lat": 43.2960548,
"lng": 5.3751573,
"city": "Marseille",
"country": "France",
"zip_code": "13001",
"opening_hours": "Monday 9 AM–10:30 PM, Tuesday 9 AM–10:30 PM...",
"scraping_time": "2025-02-10T14:31:05.487Z"
},
{
"id": "ec2348622e01fa0ed43e7c73b43665a1",
"object": "result",
"squid": "b6c56d18cb0046949461ba9ca278e8ad",
"run": "300e9c5c127d421c90f431478d9a2cfb",
"name": "Wood la cantine gourmande",
"address": "8 Rue de la Guirlande, 13002 Marseille, France",
"phone": "+33491919342",
"website": "https://woodlacantinegourmande.fr/",
"category": "French restaurant, Mediterranean restaurant",
"score": 4.7,
"ratings": 726,
"lat": 43.296790699999995,
"lng": 5.3704969,
"city": "Marseille",
"country": "France",
"zip_code": "13002",
"scraping_time": "2025-02-10T14:31:06.104Z"
}
],
"next": "https://api.lobstr.io/v1/results?squid=b6c56d18cb0046949461ba9ca278e8ad&page=2&page_size=50",
"previous": null
}
400
{
"error": {
"message": "You must provide either 'squid' or 'run' parameter, not both or neither",
"type": "validation_error",
"param": "squid,run"
}
}