Get Crawler Attributes
curl --request GET \
--url https://api.lobstr.io/v1/crawlers/{crawler_hash}/attributes \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.lobstr.io/v1/crawlers/{crawler_hash}/attributes"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.lobstr.io/v1/crawlers/{crawler_hash}/attributes', 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/crawlers/{crawler_hash}/attributes",
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.lobstr.io/v1/crawlers/{crawler_hash}/attributes"
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.lobstr.io/v1/crawlers/{crawler_hash}/attributes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lobstr.io/v1/crawlers/{crawler_hash}/attributes")
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{
"name": "<string>",
"type": "<string>",
"example": "<any>",
"function": "<string>",
"is_main": true,
"description": "<string>"
}Crawler
Get Crawler Attributes
Retrieve the list of output attributes (result fields) for a specific crawler
GET
/
v1
/
crawlers
/
{crawler_hash}
/
attributes
Get Crawler Attributes
curl --request GET \
--url https://api.lobstr.io/v1/crawlers/{crawler_hash}/attributes \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.lobstr.io/v1/crawlers/{crawler_hash}/attributes"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.lobstr.io/v1/crawlers/{crawler_hash}/attributes', 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/crawlers/{crawler_hash}/attributes",
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.lobstr.io/v1/crawlers/{crawler_hash}/attributes"
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.lobstr.io/v1/crawlers/{crawler_hash}/attributes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lobstr.io/v1/crawlers/{crawler_hash}/attributes")
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{
"name": "<string>",
"type": "<string>",
"example": "<any>",
"function": "<string>",
"is_main": true,
"description": "<string>"
}This endpoint returns all output attributes (result fields) for a specific crawler. Each attribute describes a field that may appear in your scraping results, along with its data type, an example value, and the function it belongs to.
This is useful for understanding the shape of data a crawler produces before you start scraping, or for building dynamic result parsers.
Attribute Fields
string
The field name as it appears in result objects. Example:
"name"string
Data type of the field (string, integer, float, boolean, text, json). Example:
"string"any
Example value for the field. May be null for optional fields. Example:
"Blues Billard Club"string
The crawler function this attribute belongs to. Example:
"Export Local Businesses"boolean
Whether this attribute is included by default (true) or requires enabling a function (false). Example:
truestring
Human-readable description of what this field contains. Example:
"Business name as listed on Google Maps"Main vs Function Attributes
Attributes are divided into two categories:- Main attributes (
is_main: true): Always included in results by default. - Function attributes (
is_main: false): Only included when their parent function is enabled on your squid (e.g., “Collect Business Details”, “Extract Emails from Website”).
Headers
string
default:"application/json"
Content type of the request. Value:
application/jsonQuery Parameters
string
required
The unique identifier (hash/id) of the crawler. Example:
4734d096159ef05210e0e1677e8be823This is a public endpoint — no authentication is required.
Attributes with is_main: false only appear in results when their parent function is enabled on your squid. Check the function field to see which add-on controls each attribute.
Use the type field to build typed parsers for your results. Supported types are: string, integer, float, boolean, text (long string), and json (structured data).
Combine this endpoint with Get Crawler Parameters to fully understand both the inputs and outputs of any crawler before integrating it.
Code Examples
curl -X GET "https://api.lobstr.io/v1/crawlers/4734d096159ef05210e0e1677e8be823/attributes"
import requests
crawler_id = "4734d096159ef05210e0e1677e8be823"
url = f"https://api.lobstr.io/v1/crawlers/{crawler_id}/attributes"
response = requests.get(url)
attributes = response.json()
# Display all attributes grouped by function
functions = {}
for attr in attributes['data']:
func = attr['function']
if func not in functions:
functions[func] = []
functions[func].append(attr)
for func_name, attrs in functions.items():
print(f"\n=== {func_name} ===")
for attr in attrs:
main_tag = " [main]" if attr['is_main'] else " [optional]"
example = f" (e.g. {attr['example']})" if attr['example'] is not None else ""
print(f" {attr['name']} ({attr['type']}){main_tag}{example}")
print(f" {attr['description']}")
Response
200
{
"data": [
{
"name": "match_filters",
"type": "boolean",
"example": false,
"function": "Export Local Businesses",
"is_main": true,
"description": "Whether the result passed your geo and category filters"
},
{
"name": "name",
"type": "string",
"example": "Blues Billard Club",
"function": "Export Local Businesses",
"is_main": true,
"description": "Business name as listed on Google Maps"
},
{
"name": "address",
"type": "string",
"example": "06110 Le Cannet, France",
"function": "Export Local Businesses",
"is_main": true,
"description": "Full formatted address of the business"
},
{
"name": "phone",
"type": "string",
"example": "+33493611118",
"function": "Export Local Businesses",
"is_main": true,
"description": "Primary phone number of the business"
},
{
"name": "website",
"type": "string",
"example": "http://www.example.com/",
"function": "Export Local Businesses",
"is_main": true,
"description": "Business website URL"
},
{
"name": "score",
"type": "float",
"example": 3.5,
"function": "Export Local Businesses",
"is_main": true,
"description": "Average star rating out of 5"
},
{
"name": "category",
"type": "text",
"example": "Fishing charter",
"function": "Export Local Businesses",
"is_main": true,
"description": "Primary business category on Google Maps"
},
{
"name": "email",
"type": "string",
"example": "info@lobstr.io",
"function": "Extract Emails from Website",
"is_main": false,
"description": "Email address found on the business website"
},
{
"name": "email_status",
"type": "string",
"example": "valid",
"function": "Extract Emails from Website",
"is_main": false,
"description": "Validation status of the extracted email address"
}
]
}