API Documentation

Transform company domains into actionable sales intelligence. Everything you need to integrate lead research into your sales workflow.

Quick Start

Get your first intelligence report in under 30 seconds.

curl -X POST https://zadro.ai/api/v1/research \
                                    -H "X-API-Key: YOUR_API_KEY" \
                                    -H "Content-Type: application/json" \
                                    -d '{"domain": "acme.com", "vertical": "technology"}'

Getting Started

The Zadro.ai API provides instant lead intelligence for B2B sales teams. With a single API call, transform any company domain into a comprehensive sales strategy report tailored to your industry vertical.

Prerequisites

  • A Zadro.ai account (sign up free)
  • An API key from your dashboard
  • Basic knowledge of REST APIs

Base URL

https://zadro.ai/api/v1

Authentication

All API requests require authentication using an API key in the X-API-Key header.

X-API-Key: YOUR_API_KEY
Keep your API key secure
Never expose your API key in client-side code or public repositories. Use environment variables and server-side requests.

API Reference

The Zadro.ai API is organized around REST principles. All requests and responses use JSON format.

Endpoints

POST /v1/research

Generate comprehensive lead intelligence for a company domain.

Request Body

{
                                    "domain": "acme.com",              // Required: Company domain
                                    "vertical": "packaging",           // Required: Industry vertical
                                    "company": "ACME Corp",            // Optional: Company name
                                    "name": "John Doe",                // Optional: Contact name
                                    "state": "CA",                     // Optional: State
                                    "role": "procurement",             // Optional: Contact role
                                    "relationship": "evaluating",      // Optional: Relationship
                                    "requirements": "Looking for sustainable packaging for energy bars",  // Optional: Lead requirements
                                    "refresh": false                   // Optional: Bypass cache (default: false)
                                  }

Required Fields

  • domain - Company website domain (e.g., "acme.com")
  • vertical - Industry vertical for targeted intelligence

Optional Fields

  • company - Company name (improves matching accuracy)
  • name - Contact person's name
  • state - State or region for geographic context
  • role - Contact's role Tailors sales angle to the decision-maker.
  • relationship - Your relationship with this prospect.
  • requirements - Lead requirements or notes Significantly enhances intelligence with customized sales angles.
  • refresh - Bypass 30-day cache and generate fresh intelligence

Supported Verticals

commercial-insurance commercial-real-estate construction-building-materials custom-manufacturing cybersecurity fleet-management functional-integrative-medicine hr-technology-payroll industrial-equipment it-consulting facility-services logistics medical-sales packaging promotional-products seo-digital-marketing staffing technology telecom-unified-communications waste-management

Supported Roles

owner-executive operations it-technology procurement sales-marketing finance engineering-rd other

Supported Relationships

no-contact engaged evaluating customer former competitor
GET /v1/research/{id}

Retrieve a previously generated research result.

Retrieve cached results by their public ID. Only accessible to the organization that created it.

Request Format

cURL

curl -X POST https://zadro.ai/api/v1/research \
                          -H "X-API-Key: YOUR_API_KEY" \
                          -H "Content-Type: application/json" \
                          -d '{"domain": "acme.com", "vertical": "packaging"}'

JavaScript (fetch)

const response = await fetch('https://zadro.ai/api/v1/research', {
                          method: 'POST',
                          headers: {
                            'X-API-Key': 'YOUR_API_KEY',
                            'Content-Type': 'application/json',
                          },
                          body: JSON.stringify({
                            domain: 'acme.com',
                            vertical: 'packaging',
                            requirements: 'Sustainable packaging for Q2 launch',
                          }),
                        });

                        const data = await response.json();

Python

import requests
                        response = requests.post(
                            'https://zadro.ai/api/v1/research',
                            headers={
                                'X-API-Key': 'YOUR_API_KEY',
                                'Content-Type': 'application/json',
                            },
                            json={
                                'domain': 'acme.com',
                                'vertical': 'packaging',
                                'requirements': 'Sustainable packaging for Q2 launch',
                            }
                        )

                        data = response.json()

PHP (Guzzle)

use GuzzleHttp\Client;
                        $client = new Client();

                        $response = $client->post('https://zadro.ai/api/v1/research', [
                            'headers' => [
                                'X-API-Key' => 'YOUR_API_KEY',
                                'Content-Type' => 'application/json',
                            ],
                            'json' => [
                                'domain' => 'acme.com',
                                'vertical' => 'packaging',
                                'requirements' => 'Sustainable packaging for Q2 launch',
                            ]
                        ]);

                        $data = json_decode($response->getBody(), true);

Response Format

Success Response (200)

{
                            "success": true,
                            "cached": false,
                            "id": "a1b2c3d4-e5f6-7g8h-9i0j-k1l2m3n4o5p6",
                            "domain": "acme.com",
                            "vertical": "packaging",
                            "time": 34.2,
                            "data": {
                                "company": {
                                    "company_name": "ACME Corporation",
                                    "website_url": "https://acme.com",
                                    "summary": "ACME Corp is a mid-market packaging manufacturer ...",
                                    "key_takeaways": [
                                        "Focus on sustainable materials and eco-friendly solutions",
                                        "Strong presence in food and beverage sector"
                                    ],
                                    "portfolio": [
                                        "Corrugated Boxes: Custom corrugated packaging for retail and shipping.",
                                        "Flexible Packaging: Pouches and wraps for food and consumer goods."
                                    ],
                                    "positioning": "Positions as a sustainable packaging partner for food brands with scalable manufacturing.",
                                    "founded_year": "2006",
                                    "employee_count": "51-200",
                                    "hq": "Chicago, IL, US",
                                    "industry": "Business Services",
                                    "socials": [
                                        { "platform": "linkedin", "url": "https://linkedin.com/company/acme-corp" },
                                        { "platform": "twitter", "url": "https://twitter.com/acmecorp" }
                                    ]
                                },
                                "sales": {
                                    "sales_angle": "Lead with sustainability messaging and supply reliability ...",
                                    "opportunity": "Offer sustainable material options, packaging optimization, and fulfillment support ..."
                                },
                                "market": {
                                    "size": "$350B global packaging market (example)",
                                    "growth_rate": "4.2% CAGR (example)",
                                    "trends": [
                                        "Increased demand for eco-friendly materials",
                                        "Automation adoption accelerating"
                                    ]
                                },
                                "signals": {
                                    "founder_info": "",
                                    "estimated_revenue": "",
                                    "recent_news": ""
                                },
                                "competitors": [
                                    { "domain": "rivalcorp.com", "relevance": 8.74 },
                                    { "domain": "packagingco.com", "relevance": 6.21 }
                                ],
                                "sources": [
                                    {
                                        "url": "https://acme.com/about",
                                        "title": "About ACME Corp",
                                        "type": "onsite"
                                    }
                                ],
                                "confidence": {
                                    "company": {
                                        "score": 0.92,
                                        "parts": {
                                            "summary": 0.93,
                                            "takeaways": 0.92,
                                            "positioning": 0.90
                                        }
                                    },
                                    "sales": {
                                        "score": 0.78,
                                        "parts": {
                                            "angle": 0.80,
                                            "opportunity": 0.75
                                        }
                                    },
                                    "market": {
                                        "score": 0.70,
                                        "parts": {
                                            "size": 0.72,
                                            "growth_rate": 0.68,
                                            "trends": 0.70
                                        }
                                    },
                                    "signals": {
                                        "score": 0.35,
                                        "parts": {
                                            "founder": 0.00,
                                            "revenue": 0.50,
                                            "news": 0.20
                                        }
                                    },
                                    "sources": {
                                        "score": 0.85,
                                        "parts": {
                                            "onsite": 0.95,
                                            "external": 0.60,
                                            "mix": 0.85
                                        }
                                    },
                                    "total": 0.76
                                }
                            }
                        }

Response Fields

Field Type Description
success boolean Request success status
cached boolean Whether result was served from cache
id string Unique identifier for this result
domain string Requested domain (normalized)
vertical string Vertical slug used for the run
time number Processing time in seconds
data.company.company_name string Company/brand name (on-site identifier)
data.company.website_url string Canonical website URL (https)
data.company.summary string Company overview and positioning (100-150 words)
data.company.key_takeaways string[] 3-5 factual bullets
data.company.portfolio string[] Product/service list ("title: description"); empty if unknown
data.company.positioning string Positioning statement; empty if unknown
data.company.founded_year string|null Year the company was founded
data.company.employee_count string|null Employee range (e.g., "51-200")
data.company.hq string|null Headquarters location
data.company.industry string|null Industry classification
data.company.socials object[]|null Social media profiles
data.company.socials[].platform string Platform name (e.g., "linkedin", "twitter", "facebook")
data.company.socials[].url string Full profile URL
data.signals.founder_info string Founder/leadership notes; empty if unknown
data.signals.estimated_revenue string Revenue range string; empty if unknown
data.signals.recent_news string Recent news summary; empty if unknown
data.sales.sales_angle string Recommended sales approach
data.sales.opportunity string Opportunity analysis (how to position and what to offer)
data.market.size string Market size string; may be empty if unavailable
data.market.growth_rate string Growth rate/CAGR string; may be empty if unavailable
data.market.trends string[] Market trends list; empty if unavailable
data.sources object[] Evidence links (3-10 items)
data.sources[].url string Source URL (https)
data.sources[].title string Page title/label
data.sources[].type string One of: onsite, news, directory
data.confidence.total number Overall confidence score (0-1)
data.confidence.company.score number Company section confidence
data.confidence.company.parts.summary number Confidence for company summary
data.confidence.company.parts.takeaways number Confidence for key takeaways
data.confidence.company.parts.positioning number Confidence for positioning
data.confidence.sales.score number Sales section confidence
data.confidence.sales.parts.angle number Confidence for sales angle
data.confidence.sales.parts.opportunity number Confidence for opportunity
data.confidence.market.score number Market section confidence
data.confidence.market.parts.size number Confidence for market size
data.confidence.market.parts.growth_rate number Confidence for growth rate
data.confidence.market.parts.trends number Confidence for market trends
data.confidence.signals.score number Signals section confidence
data.confidence.signals.parts.founder number Confidence for founder/leadership info
data.confidence.signals.parts.revenue number Confidence for estimated revenue
data.confidence.signals.parts.news number Confidence for recent news
data.confidence.sources.score number Sources quality confidence
data.confidence.sources.parts.onsite number Confidence based on on-site evidence
data.confidence.sources.parts.external number Confidence based on third-party evidence
data.confidence.sources.parts.mix number Confidence based on evidence mix
data.competitors object[]|null Competitor domains ranked by relevance
data.competitors[].domain string Competitor domain
data.competitors[].relevance number Relevance score (higher = more similar)
Note: Empty strings/arrays are expected when unverified; fields are left blank rather than guessed. Enrichment fields (founded_year, employee_count, hq, industry, socials, competitors) may be null if data is unavailable for the domain.

Error Handling

The API uses conventional HTTP status codes to indicate success or failure.

HTTP Status Codes

200
OK - Request succeeded
400
Bad Request - Invalid parameters
401
Unauthorized - Invalid API key
404
Not Found - Resource doesn't exist
429
Rate Limit - Too many requests
500
Server Error - Internal error

Error Response Format

{
                            "error": "Invalid domain format",
                            "message": "Domain must be a valid hostname without protocol",
                            "error_code": "VALIDATION_ERROR"
                          }

Error Codes

  • VALIDATION_ERROR - Invalid request parameters
  • BLOCKED_DOMAIN - Generic email domains not allowed
  • VERTICAL_NOT_FOUND - Invalid or disabled vertical
  • API_ERROR - External API failure
  • PROCESSING_ERROR - Internal processing error
  • INVALID_JSON - Invalid JSON in response
  • TOKEN_LIMIT - AI token limit exceeded
  • RATE_LIMIT_EXCEEDED - Too many requests

Rate Limits

Rate limits protect the API from abuse and ensure fair usage for all customers.

Current Limit: 100 requests per minute per organization

Handling Rate Limits

When you exceed the rate limit, you'll receive a 429 response. Implement exponential backoff:

async function fetchWithRetry(url, options, maxRetries = 3) {
                          for (let i = 0; i < maxRetries; i++) {
                            const response = await fetch(url, options);
                            
                            if (response.status === 429) {
                              const delay = 1000 * Math.pow(2, i);
                              await new Promise(r => setTimeout(r, delay));
                              continue;
                            }
                            
                            return response;
                          }
                          throw new Error('Max retries exceeded');
                        }

Best Practices

Cache responses

Results are cached for 30 days. Store results to avoid duplicate requests.

Validate domains client-side

Check domain format before making API calls to avoid wasting requests.

Include requirements

The requirements field dramatically improves intelligence quality.

Handle errors gracefully

Implement proper error handling and show users meaningful messages.

Monitor usage

Track your API usage through the dashboard to avoid surprises.

Use HTTPS only

Always use HTTPS endpoints to protect API keys and data in transit.

Ready to get started?

Create your account and get your API key in seconds.

Get Your API Key