Using the API
Making Requests
This page shows complete request/response examples for the core Extralt API workflows.
Setup
export EXTRALT_API_KEY="your-api-key"
export BASE_URL="https://api.extralt.com"Create a robot build
curl -s -X POST "$BASE_URL/robot-builds" \
-H "Authorization: Bearer $EXTRALT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example-store.com/products/sample",
"country": "US"
}' | jqResponse:
{
"_id": "bld_xyz789",
"status": "pending",
"url": "https://example-store.com/products/sample",
"country": "US"
}Get run status
curl -s "$BASE_URL/runs/$RUN_ID" \
-H "Authorization: Bearer $EXTRALT_API_KEY" | jqResponse:
{
"_id": "run_def456",
"status": "running",
"robotId": "rbt_abc123",
"extractedCount": 42,
"queueSize": 158
}List captures
curl -s "$BASE_URL/captures?runId=$RUN_ID" \
-H "Authorization: Bearer $EXTRALT_API_KEY" | jqResponse:
[
{
"id": "019d3ec3-cf96-7520-bc31-1474206e06ed",
"url": "https://www.nike.com/t/dna-mens-dri-fit-basketball-shorts-hVGm16/HV1878-350",
"extracted_at": 1774874512106,
"product_id": "HV1878-350",
"group_id": "hVGm16",
"title": "Nike DNA",
"subtitle": "Men's Dri-FIT Basketball Shorts",
"brand": "Nike",
"description": "Built for the court, ready for anywhere...",
"min_price": 41.97,
"max_price": 41.97,
"currency": "USD",
"is_available": true,
"variant_count": 7,
"image_url": "https://static.nike.com/a/images/t_default/326dc2d4-a16d-4433-93d7-8d6f8313d4d0/M+NK+DF+DNA+8IN+SHORT+AOP.png",
"options": {
"opt1": { "name": "Color", "values": ["Chlorophyll/Black"] },
"opt2": { "name": "Size", "values": ["S", "M", "L", "XL", "2XL", "3XL", "4XL"] }
},
"variants": [
{
"id": "90c9f2c2-d984-5cc2-a2a0-89deac668eb3",
"opt1": "Chlorophyll/Black",
"opt2": "S",
"identifiers": { "gtin": "00198482162061", "mpn": "HV1878-350" },
"offers": [
{
"price": { "amount": 41.97, "full_amount": 60, "currency": "USD" },
"availability": { "in_stock": true, "quantity": "In stock" },
"condition": "new",
"seller": "Nike",
"seller_type": "1p"
}
]
}
]
}
]Create a schedule
curl -s -X POST "$BASE_URL/schedules" \
-H "Authorization: Bearer $EXTRALT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"robotId": "your-robot-id",
"cadence": {
"intervalAmount": 1,
"intervalUnit": "day"
},
"config": {
"startUrls": ["https://example-store.com/products"],
"budget": 50
}
}' | jqResponse:
{
"_id": "sch_xyz789",
"name": "Daily example-store.com run",
"robotId": "rbt_abc123",
"enabled": true,
"cadence": {
"intervalAmount": 1,
"intervalUnit": "day"
},
"config": {
"startUrls": ["https://example-store.com/products"],
"budget": 50
},
"nextRunAt": 1704067200000
}List schedules
curl -s "$BASE_URL/schedules" \
-H "Authorization: Bearer $EXTRALT_API_KEY" | jqResponse:
[
{
"_id": "sch_xyz789",
"name": "Daily example-store.com run",
"robotId": "rbt_abc123",
"enabled": true,
"cadence": {
"intervalAmount": 1,
"intervalUnit": "day"
},
"config": {
"startUrls": ["https://example-store.com/products"],
"budget": 50
},
"nextRunAt": 1704067200000
}
]