Submit SpiderMapsEnrich Job
/api/v1/jobs/spiderMapsEnrich/submitOverview
SpiderMapsEnrich is a second-stage enrichment worker that visits individual Google Maps place pages to extract detailed data not available from the initial SpiderMaps discovery crawl.
Two-Stage Architecture:
- SpiderMaps - Discovers businesses via search (returns basic info for 100+ results)
- SpiderMapsEnrich - Enriches individual places (returns reviews, photos, analysis)
Best For
- Extracting customer reviews and sentiment analysis
- Getting negative review breakdown for competitor research
- Downloading and hosting business photos
- Popular times data extraction
- Related places discovery (snowball expansion)
- Deep dive on specific businesses from SpiderMaps results
Request Body
payloadobjectrequiredJob configuration payload
priorityintegerdefault: 5Job priority (0-10, higher = processed first).
Response
job_idstringUnique job identifier (UUID format).
typestringAlways spiderMapsEnrich.
statusstringInitial status: queued.
created_atstringJob creation timestamp (ISO 8601).
messagestringConfirmation message.
Example Request
- cURL - Basic
- cURL - With Options
- Python
- JavaScript
curl -X POST https://spideriq.ai/api/v1/jobs/spiderMapsEnrich/submit \
-H "Authorization: Bearer <your_token>" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"google_cid": "0x87c9f95545605943:0x6bad649f33559c94"
}
}'
curl -X POST https://spideriq.ai/api/v1/jobs/spiderMapsEnrich/submit \
-H "Authorization: Bearer <your_token>" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"google_cid": "0x47c708e4cc62845f:0x2d80199bcc9f805c",
"enrich_options": {
"reviews": {
"enabled": true,
"max_count": 100,
"negative_only": true
},
"photos": {
"enabled": true,
"max_count": 20
},
"store_images": true
}
},
"priority": 7
}'
import requests
url = "https://spideriq.ai/api/v1/jobs/spiderMapsEnrich/submit"
headers = {
"Authorization": "Bearer <your_token>",
"Content-Type": "application/json"
}
data = {
"payload": {
"google_cid": "0x87c9f95545605943:0x6bad649f33559c94",
"enrich_options": {
"reviews": {"enabled": True, "max_count": 50},
"photos": {"enabled": True, "max_count": 10},
"store_images": True
}
}
}
response = requests.post(url, headers=headers, json=data)
job = response.json()
print(f"Job ID: {job['job_id']}")
const response = await fetch(
'https://spideriq.ai/api/v1/jobs/spiderMapsEnrich/submit',
{
method: 'POST',
headers: {
'Authorization': 'Bearer <your_token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
payload: {
google_cid: '0x87c9f95545605943:0x6bad649f33559c94',
enrich_options: {
reviews: { enabled: true, max_count: 50 },
photos: { enabled: true, max_count: 10 },
store_images: true
}
}
})
}
);
const job = await response.json();
console.log('Job ID:', job.job_id);
Example Response
{
"job_id": "9c1e51c6-ae76-46d2-958e-b77061ef197d",
"type": "spiderMapsEnrich",
"status": "queued",
"created_at": "2026-01-18T12:31:37.073080",
"message": "Job submitted successfully"
}
Results Structure
When the job completes, results include:
Core Business Data
dataobjectCore business information.
Reviews
reviewsarrayArray of extracted reviews.
Each review contains:
review_id- Unique review identifierauthor- Reviewer namerating- Star rating (1-5)text- Review textdate- Review date (relative, e.g., "2 weeks ago")is_local_guide- Whether reviewer is a Local Guidehas_owner_response- Whether owner respondedowner_response- Owner's response (if any)
Review Analysis
review_analysisobjectAutomated review sentiment analysis.
Photos
photosarrayHosted photo URLs (SpiderMedia).
Format: https://media.spideriq.ai/client-{client_id}/gmaps/gmaps_enrich_{cid}_{n}.jpg
photos_originalarrayOriginal Google CDN photo URLs (fallback).
Additional Fields
review_tagsarrayKeyword summaries from reviews.
Example: ["Great pizza", "Fast service", "Cash only"]
menu_linkstringDirect URL to restaurant menu (if available).
street_view_urlstringConstructed Street View URL from coordinates.
popular_timesobjectBusy hours data by day of week.
related_places_foundintegerCount of related places discovered (for snowball).
Metadata
metadataobjectProcessing metadata.
Complete Results Example
{
"success": true,
"job_id": "9c1e51c6-ae76-46d2-958e-b77061ef197d",
"type": "spiderMapsEnrich",
"status": "completed",
"processing_time_seconds": 44.13,
"data": {
"data": {
"name": "Joe's Pizza",
"address": "7 Carmine St, New York, NY 10014",
"phone": "(212) 366-1182",
"website": "https://joespizzanyc.com",
"rating": 4.5,
"category": "Pizza restaurant"
},
"reviews": [
{
"review_id": "abc123",
"author": "John D.",
"rating": 5,
"text": "Best pizza in NYC!",
"date": "2 weeks ago",
"is_local_guide": true,
"has_owner_response": false
}
],
"review_analysis": {
"total_extracted": 50,
"rating_distribution": {
"5_star": 35,
"4_star": 8,
"3_star": 4,
"2_star": 2,
"1_star": 1
},
"negative_reviews": ["Service was slow...", "Overpriced for what you get..."],
"negative_count": 3,
"negative_percentage": 6.0,
"owner_response_rate_negative": 66.7,
"common_complaints": ["service", "value"]
},
"photos": [
"https://media.spideriq.ai/client-cli_xxx/gmaps/gmaps_enrich_0x123_1.jpg",
"https://media.spideriq.ai/client-cli_xxx/gmaps/gmaps_enrich_0x123_2.jpg"
],
"review_tags": ["Great pizza", "Fast service", "Cash only"],
"menu_link": "https://joespizzanyc.com/menu",
"street_view_url": "https://www.google.com/maps/@40.7305,-73.9996,3a,75y,90t/data=...",
"popular_times": {},
"related_places_found": 15,
"metadata": {
"worker_id": "spider-maps-enrich-1",
"vps_id": "llm5",
"proxy_used": true,
"scrape_time_ms": 42094,
"reviews_extracted": 50,
"reviews_returned": 50,
"photos_extracted": 5,
"photos_hosted": 5,
"negative_reviews_count": 3
}
}
}
Complaint Categories
The common_complaints field categorizes negative reviews:
| Category | Keywords Detected |
|---|---|
service | slow service, rude, ignored, unfriendly |
food_quality | cold food, stale, undercooked, bland |
cleanliness | dirty, filthy, bugs, smell |
value | overpriced, expensive, ripoff, small portions |
wait_time | long wait, slow, took forever |
management | manager, owner, refused, no refund |
Processing Time
| Configuration | Typical Time |
|---|---|
| Basic enrichment (no reviews) | 15-30 seconds |
| With 50 reviews | 30-60 seconds |
| With 200 reviews | 60-120 seconds |
| With proxy | Add 15-30 seconds |
Error Cases
Invalid Identifier
{
"detail": "At least one of google_place_id, google_cid, or place_url is required"
}
Place Not Found
{
"success": false,
"status": "failed",
"error": "Place not found at provided identifier"
}