Skip to content
GridRouterhome

Search

Search providers, capabilities and pages

Unified API and routing

One API for every go-to-market data provider

Ask for a capability, not a provider. GridRouter picks the provider, falls back on a miss or an error, and answers in one schema.

See it working

A routed call, attempt by attemptDemo dataOpen in the demo
  1. Example Alpha
    Miss713 ms$0
    Example Alpha: Miss, started at 0 ms, took 713 ms, cost $0
  2. Example Beta
    Hit817 ms$0.006
    Example Beta: Hit, started at 713 ms, took 817 ms, cost $0.006
ProviderCallsError ratep95Spend
Example Alpha2051.0%2643 ms$0.709
Example Zeta1060.9%1225 ms$0.023
Example Gamma880.0%5037 ms$0.238
Example Beta651.5%1633 ms$0.043
Example Eta623.2%5308 ms$0.235
Example Sigma490.0%3079 ms$0.031
Example Delta440.0%2883 ms$0.024
Example Pi320.0%10725 ms$0.0096
Example Lambda300.0%1528 ms$0.0022
Example Theta254.0%4226 ms$0.072
Example Tau140.0%6516 ms$0.0018
The first provider missed, the second found a verified email. Each bar is one attempt on the run's own clock; the table shows three days of calls by provider.

What you get

  • Capability-first calls

    POST /v1/run/people.email.find and get the same input and output shape whichever provider answers.

  • Fallbacks that stop at the first hit

    Misses, provider errors and providers you have no key for fall through to the next one. Failed and missed attempts are free.

  • Load balancing by price and health

    With no order set, providers with recent errors go last and the rest are drawn by price. Open circuit breakers are skipped.

  • Provider preferences per call or preset

    order, only, ignore, sort, max price, preferred latency and data policy, in the request body or a saved preset.

  • Every attempt in the response

    Outcome, cost, latency and error code for each provider tried, and one call log row per attempt.

  • Direct calls when you want them

    POST /v1/call/{provider}/{endpoint} runs exactly one endpoint and never routes.

How it works

  1. Add your vendor keys once. They're sealed in your workspace's vault.

  2. Call a capability with one GridRouter API key, optionally with provider preferences.

  3. Read the answer in one schema, with every attempt, its cost and its latency.

POST /v1/run/{capability}
curl https://api.gridrouter.io/v1/run/people.email.find \
  -H "Authorization: Bearer $GRID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "input": { "first_name": "Ada", "last_name": "Lovelace", "domain": "example.com" },
    "provider": { "order": ["prospeo", "hunter"], "allow_fallbacks": true },
    "fields": ["email", "confidence"],
    "stop_when": "hit"
  }'

Questions

What's the difference between /v1/run and /v1/call?

/v1/call/{provider}/{endpoint} runs one endpoint and never routes. /v1/run/{capability} plans the providers that serve a capability and tries them in turn until one hits.

Do I pay for failed or missed attempts?

No. GridRouter never charges for a miss or a failed attempt. On your own vendor keys GridRouter charges nothing at all; the provider bills your account by its own rules.

Can I pin the order or turn fallbacks off?

Yes. Send provider.order with the providers you want first, and "allow_fallbacks": false to try only those.

Try it on your own data

Free while we launch. Bring your vendor keys; no card needed.