Skip to main content

Get Workflow Results

GET/api/v1/jobs/spiderMaps/campaigns/{campaign_id}/workflow-results

Overview

Retrieve aggregated results from an orchestrated campaign. This endpoint combines data from all three services in the workflow chain, providing a complete view of each business including:

  • SpiderMaps data: Business name, address, phone, rating, categories
  • SpiderSite data: Emails found, team members, company info, lead scoring
  • SpiderVerify data: Email verification results with deliverability status
info

v2.15.0 Feature: This endpoint is only available for campaigns created with workflow orchestration enabled.

Path Parameters

campaign_idstringrequired

The campaign ID returned from the submit endpoint (e.g., "camp_fr_restaurants_20251223_a1b2c3d4")

Query Parameters

include_pendingbooleandefault: false

Include businesses still being processed in the workflow

min_valid_emailsinteger

Filter to only include businesses with at least this many valid emails

pageintegerdefault: 1

Page number for pagination

page_sizeintegerdefault: 50

Results per page (max 100)

Response

campaign_idstring

The campaign identifier

statusstring

Campaign status: active, completed, stopped

querystring

The original search query

country_codestring

ISO country code

progressobject

Campaign location progress

workflow_progressobject

Workflow chain progress statistics

total_locationsinteger

Total locations in the campaign

total_businessesinteger

Total businesses found across all locations

total_with_domainsinteger

Businesses with valid website domains

total_domains_filteredinteger

Domains filtered out (social media, review sites, etc.)

total_emails_foundinteger

Total emails extracted from websites

total_emails_verifiedinteger

Total emails that completed verification

total_valid_emailsinteger

Total emails confirmed as valid/deliverable

locationsarray

Detailed results by location

Business Result Object

Each business in the locations[].businesses array contains:

business_namestring

Business name from Google Maps

business_place_idstring

Google Maps place ID

business_addressstring

Full address

business_phonestring

Phone number

business_ratingnumber

Google Maps rating (1-5)

business_reviews_countinteger

Number of Google reviews

business_categoriesarray

Business category tags

original_websitestring

Original website URL from Google Maps

domainstring

Cleaned domain (null if filtered)

domain_filteredboolean

Whether the domain was filtered out

filter_reasonstring

Why domain was filtered: social_media, review_site, directory, maps, no_website

spidersite_statusstring

SpiderSite job status: completed, failed, skipped, pending

pages_crawledinteger

Number of pages crawled by SpiderSite

emails_foundarray

Email addresses extracted from website

phones_foundarray

Additional phone numbers from website

social_mediaobject

Social media links found (linkedin, twitter, facebook, etc.)

company_infoobject

AI-extracted company information (if extract_company_info enabled)

team_membersarray

AI-extracted team members (if extract_team enabled)

lead_scoringobject

CHAMP lead scoring results (if product_description and icp_description provided)

spiderverify_statusstring

SpiderVerify job status: completed, failed, skipped, pending

emails_verifiedarray

Email verification results

valid_emails_countinteger

Count of verified valid emails for this business

workflow_stagestring

Current workflow stage: maps, site, verify, complete, failed

Example

curl -X GET "https://spideriq.ai/api/v1/jobs/spiderMaps/campaigns/camp_fr_restaurants_20251223_a1b2c3d4/workflow-results" \
-H "Authorization: Bearer <your_token>"

Response:

{
"campaign_id": "camp_fr_restaurants_20251223_a1b2c3d4",
"status": "completed",
"query": "restaurants",
"country_code": "FR",
"progress": {
"completed": 42,
"failed": 0,
"pending": 0,
"total": 42,
"percentage": 100.0
},
"workflow_progress": {
"businesses_total": 520,
"sites_queued": 0,
"sites_completed": 485,
"sites_failed": 35,
"verifies_queued": 0,
"verifies_completed": 485,
"verifies_failed": 0,
"emails_found": 1250,
"emails_verified": 1250
},
"total_locations": 42,
"total_businesses": 840,
"total_with_domains": 520,
"total_domains_filtered": 320,
"total_emails_found": 1250,
"total_emails_verified": 1250,
"total_valid_emails": 892,
"locations": [
{
"location_id": 15201,
"search_string": "restaurants in Paris, France",
"display_name": "Paris",
"status": "completed",
"businesses_count": 20,
"businesses": [
{
"business_name": "Le Petit Bistro",
"business_place_id": "ChIJN1t_tDeuEmsRUsoyG83frY4",
"business_address": "123 Rue de Rivoli, 75001 Paris, France",
"business_phone": "+33 1 42 96 12 34",
"business_rating": 4.5,
"business_reviews_count": 234,
"business_categories": ["French restaurant", "Bistro"],
"original_website": "https://lepetitbistro.fr",
"domain": "lepetitbistro.fr",
"domain_filtered": false,
"filter_reason": null,
"spidersite_status": "completed",
"pages_crawled": 8,
"emails_found": ["contact@lepetitbistro.fr", "reservations@lepetitbistro.fr"],
"phones_found": ["+33 1 42 96 12 34", "+33 1 42 96 12 35"],
"social_media": {
"instagram": "https://instagram.com/lepetitbistro",
"facebook": "https://facebook.com/lepetitbistroparis"
},
"company_info": {
"description": "Traditional French bistro serving classic dishes since 1985",
"founded": "1985",
"employees": "10-20"
},
"team_members": [],
"lead_scoring": {
"champ_score": 78,
"challenges": ["Managing reservations manually", "Limited online presence"],
"authority": "Owner-operated",
"money": "Medium",
"priority": "High"
},
"spiderverify_status": "completed",
"emails_verified": [
{
"email": "contact@lepetitbistro.fr",
"status": "valid",
"score": 95,
"is_deliverable": true,
"is_free_email": false,
"is_disposable": false,
"is_role_account": true
},
{
"email": "reservations@lepetitbistro.fr",
"status": "valid",
"score": 92,
"is_deliverable": true,
"is_free_email": false,
"is_disposable": false,
"is_role_account": true
}
],
"valid_emails_count": 2,
"workflow_stage": "complete"
}
]
}
],
"created_at": "2025-12-23T10:30:00Z",
"updated_at": "2025-12-23T14:45:00Z",
"completed_at": "2025-12-23T14:45:00Z"
}

Error Responses

Campaign Not Found

{
"detail": "Campaign not found: camp_invalid_id"
}

No Workflow Configured

{
"detail": "Campaign does not have workflow orchestration enabled"
}

Export to CSV

Here's a Python example to export workflow results to CSV:

import requests
import csv

# Fetch results
response = requests.get(
f"https://spideriq.ai/api/v1/jobs/spiderMaps/campaigns/{campaign_id}/workflow-results",
headers={"Authorization": f"Bearer {token}"}
)
results = response.json()

# Write to CSV
with open('leads.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow([
'Business Name', 'Phone', 'Address', 'Rating', 'Reviews',
'Domain', 'Email', 'Email Status', 'Lead Score'
])

for location in results['locations']:
for business in location['businesses']:
for email in business.get('emails_verified', []):
if email['status'] == 'valid':
writer.writerow([
business['business_name'],
business['business_phone'],
business['business_address'],
business['business_rating'],
business['business_reviews_count'],
business['domain'],
email['email'],
email['status'],
business.get('lead_scoring', {}).get('champ_score', '')
])

print(f"Exported {results['total_valid_emails']} valid emails")