Guides
Migrate from BigPicture to SavvyIQ
Why migrate
- More accurate business data. BigPicture matched by domain, so company size, revenue, and industry frequently came back wrong (e.g., Google has thousands of domains; small businesses on shared hosting hit the same problem). SavvyIQ resolves to the legal entity first, then attaches data.
- Real industry classification. NAICS and SIC codes with per-code confidence, not a flat tag list. The most-requested BigPicture feature.
- Ownership. Ultimate-parent research with evidence. Not available in BigPicture.
- Stable entity IDs. One record per business, queried by ID instead of by URL.
- Same throughput. 600 requests/minute.
Pricing and migration support
- Pricing. Usage-based, published on savvyiq.ai/pricing. Contact sales for volume.
- Migration credits. Free credits available to cover testing and any data-parity issues during cutover. Ask support.
- Parallel run supported. Both APIs accept traffic today. Run them side by side during cutover and compare responses.
- Time to migrate. Most integrations complete the port in under an hour.
What changes
- Base URL.
company.bigpicture.io→api.savvyiq.ai - Auth header.
Authorization: keyId:keySecret→apikey: TOKEN(lowercase) - Flow. 1 call → 2 calls (resolve, then fetch the full record by
siq_ID) - Webhooks. Per-call
webhook_url, like BigPicture’swebhookUrl, pluscustom_idfor correlation. See Webhooks. - Response shape. Different field paths, mapped below.
Endpoint mapping
| BigPicture | SavvyIQ |
|---|---|
GET /v1/companies/find | GET /v3/domain-intelligence |
GET /v1/companies/find/stream | GET /v3/domain-intelligence |
GET /v2/companies/search | POST /v3/entity-resolution/async + GET /v3/runs/{run_id} |
GET /v2/companies/ip | No equivalent. Contact us. |
For full business data after step 1, call GET /v3/entities/{id}.
Authentication
- Sign up at app.savvyiq.ai/signup.
- Generate a key at app.savvyiq.ai/api-keys.
- Send it on every request:
Authorization: a1b2c3d4...:s3cr3tValu3... Step 1: resolve
By domain
GET /v3/domain-intelligence answers in seconds for a domain we hold. A new domain returns status: "building"; poll until complete, or pass webhook_url. Returns a siq_ entity ID for step 2.
curl "https://api.savvyiq.ai/v3/domain-intelligence?domain=uber.com" \
-H "apikey: YOUR_API_KEY" By name
Submit, then poll the run. Returns a siq_ entity ID.
# Submit
curl -X POST "https://api.savvyiq.ai/v3/entity-resolution/async" \
-H "apikey: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{"name": "Datadog", "location": "New York, NY"}'
# Poll (202 while running, 200 when done)
curl "https://api.savvyiq.ai/v3/runs/run_344tSxhAVACWbuENINJ9D" \
-H "apikey: YOUR_API_KEY" Step 2: get the full business record
Pass the siq_ entity ID to /v3/entities/{id}. Returns names, headquarters, identifiers, industry codes, firmographics, social handles. The endpoint never blocks: a record that has not been enriched yet is served with enrichment.status: "building" and the build starts in the background. Poll until complete.
curl "https://api.savvyiq.ai/v3/entities/siq_33d67jj0wJESjEdFHMhuQ" \
-H "apikey: YOUR_API_KEY" Full schema: Business Intelligence API. For large lists, submit with custom_id and collect by webhook or by polling out of band. See Batch processing.
Response shape
The record from step 2 covers what BigPicture customers asked for most: industry classification, employee count, revenue, plus founding date, market cap, funding raised, and social handles.
| BigPicture | SavvyIQ (GET /v3/entities/{id}) |
|---|---|
name | entity.display_name |
legalName | entity.legal_name |
domain | entity.attributes.domain |
url | entity.website |
description | entity.description |
foundedYear | entity.attributes.founding_date (YYYY-MM-DD) |
geo.* | entity.headquarters.address.* |
tags | entity.classification.business_tags[] |
category.* (incl. naicsCode) | entity.industry.schemes.naics_2022[], entity.industry.schemes.sic[] (with per-code confidence, primary first) |
metrics.employees, metrics.employeesRange | entity.attributes.employee_count, entity.attributes.employee_range |
metrics.annualRevenue, metrics.estimatedAnnualRevenue | entity.attributes.revenue, entity.attributes.revenue_range |
metrics.marketCap | entity.attributes.market_cap |
metrics.raised | entity.attributes.funding_total_usd |
ticker | entity.attributes.stock_ticker |
type (public/private) | entity.attributes.is_public, entity.facets.sector |
linkedin.handle, facebook.handle, twitter.handle, crunchbase.handle | entity.social_profiles.{linkedin,facebook,twitter,crunchbase}.handle |
logo, phone, tech, alexa*Rank | Not returned |
trancoRank | data.domain_intelligence.tranco_rank on /v3/domain-intelligence |
Fields that are unknown come back null, never as a guess. See the Business Intelligence API for a full example response.
Errors
// 400, 404, 500
{ "error": { "message": "...", "type": "bad_request" } }
// 401
{ "message": "No API key found in request", "request_id": "..." }
// 402, 403, 429 (plan limits)
{ "error": "insufficient_credits", "message": "..." }
| Status | Meaning |
|---|---|
| 400 | Bad parameter. Do not retry. |
| 401 | Bad or missing API key. |
| 402 | Account balance too low. Top up, then retry. |
| 403 | API not enabled for your account. |
| 404 | Entity not found. |
| 429 | Rate limited, or a plan limit was reached. Back off. |
| 500 | Server error. Retry with backoff. |
| 503 | Billing temporarily unavailable. Retry with backoff. |
| 504 | Gateway timeout. Retry with backoff. |
Rate limits
600 requests/minute per account, counted per endpoint. Every API key on an account shares the same allowance. Headers on every response:
RateLimit-LimitRateLimit-RemainingRateLimit-Reset
Parity gaps
- Webhooks. Supported per call: pass
webhook_urlon any/v3async request, the waywebhookUrlworked. WhatwebhookIddid for you iscustom_id: pass it on the request and it comes back on the delivery, on the202, and on every poll. See Webhooks. - IP lookup. No equivalent. Contact us.
Dashboard
Keys, usage, and billing: app.savvyiq.ai.
FAQ
Will my BigPicture API key keep working?
Yes. company.bigpicture.io continues to accept requests; migrate on your own schedule.
Can I run BigPicture and SavvyIQ in parallel? Yes. Both APIs accept traffic today. Compare responses side by side during cutover.
What does it cost? Usage-based, published on savvyiq.ai/pricing. Every account starts with free credit. Contact sales for volume.
Are migration credits available? Yes. Email support to request credits for testing and any data-parity issues during cutover.
How long does the migration take? Under an hour for most integrations. Half a day if you have many call sites or complex response parsing.
How do I report a migration issue? Email support with your BigPicture account ID, the endpoint you’re porting, and a sample request/response pair.
Will the SavvyIQ API change again soon? No breaking changes to the endpoints in this guide are planned. Email support to be notified of future changes.
Need help
Email support if anything blocks your migration.