Pay as you go · No subscription · Bring your own keys or use credits
Close Icon

One API for every GTM tool

Apollo, ZoomInfo, Harmonic, Harvest API and more behind a single request and response. Pick any provider per call, bring your own keys or pay as you go.
Get API key
Get API key
Button arrow
Works with

One schema, no matter who answers

Every provider names the same field differently. Jooli maps them all onto one request and one response, so switching from Apollo to ZoomInfo is a one-word change, not a new integration.
Apollo
first_nameorganization_namesanitized_phone
ZoomInfo
firstNamecompanyNamedirectPhoneNumber
PDL
full_namejob_company_namemobile_phone
Jooli schemaalways
{"name": "Dylan Field""company": { "name": "Figma" }"phone": "+1 ••• ••• ••••"}

Bring your own keys, or run on credits

Already have a ZoomInfo contract? Plug the key in and keep your rates. No contract with Harmonic? Use Jooli credits and pay per record. Mix both, provider by provider.
ProvidersBalance $182.40
  • ZoomInfoYour keyCredits
  • ApolloYour keyCredits
  • HarmonicYour keyCredits
  • Harvest APIYour keyCredits

Add a provider without writing a line of code

New sources land behind the same endpoints. When a better dataset shows up, you point a request at it and ship, with no SDK to learn and no response parser to rewrite.
Apollo
ZoomInfo
Harmonic
Harvest API
People Data Labs
Crunchbase
Why Jooli

The routing layer your GTM stack has been missing

Switch in one line

Change the provider string and nothing else. Compare match rates across sources on real traffic before you commit to any of them.

No lock-in, either way

No subscription to Jooli and no forced contract with a provider. Your keys stay yours, and credits only move when a record comes back.

Fallbacks built in

Pass a list instead of a name and Jooli tries each provider in order, handling retries and rate limits for you.

Three endpoints cover the whole outbound motion

People, companies and search. The same three calls work against every provider you turn on.
People enrichment

Turn a LinkedIn URL or an email into a verified contact.

POST /v1/people/enrich200 OK
Karim AtiyehKarim AtiyehCo-founder & Co-CEO, Ramp
{"provider": "apollo""linkedin_url": "linkedin.com/in/karimatiyeh""email": "k•••@ramp.com""email_status": "verified""phone": "+1 ••• ••• ••••"}
Company intelligence

Headcount, funding and tech stack from a single domain.

POST /v1/companies/enrich200 OK
{"provider": "harmonic""domain": "ramp.com""name": "Ramp""founded": 2019"hq": "New York, NY""last_round": { "stage": "Series F", "usd": 750000000 }"valuation_usd": 44000000000}
Who it’s for

Built for the teams that wire GTM together

See every provider’s usage and spend in one place

Stop reconciling five invoices and five dashboards. Jooli shows what each source returned and what it cost, whether it ran on your key or on credits.
Usage this weekOne invoice
  • Apollopeople/enrich1,204$36.12
  • Harmoniccompanies/enrich310your key
  • Lushapeople/enrich188$9.40
  • ZoomInfopeople/search2,500your key

Give your agent one tool instead of a dozen

One predictable schema means one tool definition. Your agent asks for a person or a company and never needs to know which vendor answered.
tools/enrich_person.json
{"name": "enrich_person""endpoint": "/v1/people/enrich""provider": ["apollo", "pdl", "lusha"]"returns": "jooli.person.v1"}

Ship the enrichment feature this sprint, not this quarter

Skip the vendor SDKs, auth quirks and pagination styles. Integrate once and let sales ask for a new source without it becoming an engineering project.

Load clean, comparable records into the warehouse

Every record arrives in the same shape with its provider attached, so you can benchmark sources against each other and keep lineage without custom parsers.
Apollo
first_nameorganization_namesanitized_phone
ZoomInfo
firstNamecompanyNamedirectPhoneNumber
PDL
full_namejob_company_namemobile_phone
Jooli schemaalways
{"name": "Dylan Field""company": { "name": "Figma" }"phone": "+1 ••• ••• ••••"}
Before and after

The integration work you get to skip

Without Jooli
  • A separate integration, SDK and auth flow per provider
  • A different response shape to parse for each one
  • Annual contracts signed before you know the match rate
  • Custom retry, rate limit and fallback logic
  • One invoice and one dashboard per vendor
With Jooli
  • One endpoint, one key, one schema
  • Switch or compare providers by changing a string
  • Pay as you go with credits, or plug in keys you already own
  • Ordered fallbacks and retries handled for you
  • One usage view across every source

Frequently asked questions

What exactly does Jooli do?
Jooli sits between your product and the GTM data providers you would otherwise integrate one by one. You send one request in one format and name the provider you want. Jooli translates the call, and you get back the same normalized response shape whichever provider answered.
How do I choose which provider answers?
Set the provider field on the request, for example "apollo" or "zoominfo". To switch, change that one string. If you pass an ordered list instead, Jooli tries each provider in turn until one returns a match.
Do I need my own contracts with Apollo, ZoomInfo and the rest?
No. With Jooli credits, one key is enough to query any supported provider. If you already have a contract with a provider, connect that key and those calls run on your own account. You can mix both, provider by provider.
How does pricing work?
Pay as you go. There is no subscription, no seat licence and no minimum commitment. Write to [email protected] for current rates.
What happens when a provider is down or rate limits me?
If you passed a list of providers, Jooli retries and moves on to the next one, and the response tells you which providers were tried. With a single provider you get a clear, consistent error instead of a vendor-specific one.
The provider I need is not listed. Can you add it?
Yes. New providers slot in behind the same schema, so nothing changes in your code when one is added. Tell us which one at [email protected].

Stop integrating providers. Start shipping pipeline.

One key, one schema, every GTM data source. Pay only for the records you actually get back.
Get API key
Get API key