Documentation
GTM & leads
Find companies and contacts, verify work emails, and research prospects. This guide compares the available providers and shows how to build a list, enrich it, and prepare outreach.
When to use which
People and emails
| Need | Call | Price | Mode |
|---|---|---|---|
| People and contacts from a query. Start here. | vaaya/onefind, then onefind-deep | 2¢, then per filled field | sync, async |
| Find people by ICP (primary) | exa/search with category: "people" | 1¢/query | sync |
| Find people by ICP (fallback) | contactout/people-search | 1¢/profile | sync |
| Reveal a work email (try first) | exa/search + exa/contents | 1¢ + 0.1¢/URL | sync |
| Reveal a verified email (fallback) | contactout/linkedin-contacts | 10¢ (free on miss) | sync |
| Email from name + company (the rung after a ContactOut miss) | tomba/email-finder | 4¢ | sync |
| Email (next rung, on different infrastructure) | icypeas/email-search | 4¢ + 1¢/poll | async |
| Deliverability (primary, any address) | tomba/email-verifier | 2¢ | sync |
| Deliverability (second opinion) | icypeas/email-verification | 2¢ + 1¢/poll | async |
| Deliverability (alternate) | contactout/email-verify | 2¢ | sync |
| All emails at a company + its pattern | tomba/domain-search | 4¢ | sync |
| Generic inboxes at a domain (contact@, support@…) | icypeas/domain-scan | 4¢ + 1¢/poll | async |
| Email behind a LinkedIn profile | tomba/linkedin-finder | 5¢ | sync |
| Article author + their email | tomba/author-finder | 4¢ | sync |
| Email → person + company (cheap reverse lookup) | tomba/enrich | 4¢ | sync |
| Phone by email / domain / LinkedIn | tomba/phone-finder | 10¢ | sync |
| Deep person enrich / reverse lookup incl. phones | nyne/person-enrich | 55¢ (lite 30¢) | async |
Companies and signals
| Need | Call | Price | Mode |
|---|---|---|---|
| Companies like your best customers (≤100) | openfunnel/lookalikes | ~1¢/company | sync |
| Whole-market TAM from an ICP (thousands) | openfunnel/tam-build | per company delivered | async |
| Companies running a tech (from job posts) | openfunnel/tech-companies | 40¢/page | sync |
| Tech + LLM-verified buying intent | openfunnel/tech-intent | 20¢/qualified | async |
| Qualify one account against a question | openfunnel/deep-research | 20¢ | sync |
| Raw job postings by title/tech/salary/date | theirstack/jobs | 40¢/≤10 jobs | sync |
| Companies by tech stack + active hiring | theirstack/companies | 60¢/≤5 companies | sync |
| One company’s tech stack with confidence + dates | theirstack/technographics | 25¢ | sync |
| One company’s buying-intent topics | theirstack/buying-intents | 25¢ | sync |
| Fresh funding rounds market-wide | signalbase/funding | 25¢/≤100 rows | sync |
| M&A events, acquirer and target | signalbase/acquisitions | 25¢/≤100 rows | sync |
| Executive job changes | signalbase/job-changes | 25¢/≤100 rows | sync |
| Hiring signals market-wide | signalbase/hiring | 25¢/≤100 rows | sync |
| Investors DB by type and ticket size | signalbase/investors | 25¢/≤100 rows | sync |
| Funding rounds with news sources | fundable/deals | 10¢/row returned | sync |
| Who led a round, which partner, which angels | fundable/deal-investors | 10¢ flat | sync |
| A fund’s or a person’s deal history | fundable/investor-deals … | 10¢/row returned | sync |
| Name → Fundable id, to enter the graph | fundable/company-search … | 1¢ | sync |
| Deep private-company profile (pick sections) | akta/company-enrich | 4–35¢/section | sync |
| Entity-resolved news with sentiment | akta/news | ~2¢/10 articles | sync |
| Alt-data: reviews, headcount, traffic, jobs, social | akta/employee-reviews … | 11–21¢ | sync |
| SEO and PPC competitor research | spyfu/query | 1–3¢ | sync |
| Investor intel (thesis, partners, check size) | nyne/company-funders | 30¢ | async |
| Who follows / replied to a profile or post | nyne/person-interactions | 30¢ | async |
The chain that works: OpenFunnel answers which companies, exa/search with category: "people" answers who to talk to there, and the email waterfall turns names into verified contacts. For emails the waterfall order is Exa (cheapest) → contactout/linkedin-contacts (free on a miss) → tomba/email-finder → icypeas/email-search. Verify every address before a real send with tomba/email-verifier.
exa: people discovery (try it first)
- Price
- 1¢/query ·
exa/contents0.1¢/URL - Latency
- fast
- Query style
- free text, no canonicalizing needed
Exa is the primary people-discovery engine. Phrase an open ICP query (role + seniority + industry + company size + geography) and run one query per role. Read each profile’s name, title, company, and /in/ URL from the returned text.
curl -X POST https://vaaya.ai/api/run/exa/search \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "VP Sales at fintech companies with 21-100 employees in India, LinkedIn profiles",
"category": "people",
"numResults": 50,
"contents": { "text": true }
}'- To reveal an email, try Exa first:
exa/searchthe person + company, thenexa/contents(0.1¢/URL) on the best hits to pull the address off the page. Full Exa params on Web search. - ContactOut (below) is the fallback for people data; a scrape or web search is the fallback for information: an email on a page, not in a database. See Web scraping.
- Exa takes free-text values like “Midwest” or “fintech”, and so does the ContactOut fallback. There is no filter vocabulary to canonicalize on either path.
contactout: find, enrich, verify (the people fallback)
- Price
- people-search 1¢/profile · linkedin-contacts 10¢ (free on miss) · person-from-email 10¢ · email-verify 2¢
- Latency
- fast
- Mode
- sync
Use ContactOut when Exa surfaces too few people, or when Exa can’t resolve the email. It replaced Prospeo here on 2026-08-22: a 25-lead probe measured 3× the hit rate with a richer payload. Filters are free text, so there is no vocabulary to canonicalize, and a miss bills nothing.
curl -X POST https://vaaya.ai/api/run/contactout/people-search \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"job_title": ["VP Sales"],
"location": ["India"],
"seniority": ["Vice President"],
"page_size": 10
}'contactout/linkedin-contacts (10¢, free on a miss) returns work and personal emails straight from a profile URL. The parameter is profile, not linkedin_url. Add include_phone: true for phone numbers at 30¢. The response nests under profile with array fields: {"email": [...], "work_email": [...], "personal_email": [...], "phone": [...]}. Read work_email first for outbound.
curl -X POST https://vaaya.ai/api/run/contactout/linkedin-contacts \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"profile": "https://www.linkedin.com/in/satyanadella"}'contactout/person-from-email (10¢) goes the other direction: an email becomes a name, title, company, LinkedIn URL, and work history. Use it to identify an inbound signup or reply before you respond.
Gotchas
- The
linkedin-contactsparameter isprofile. Passinglinkedin_urlis rejected at schema validation: 0¢ and no transaction row, but also no result. page_sizeonpeople-searchIS the price: a page of 10 costs 10¢ whether or not you enrich anyone. Ask for what you need (max 25).- Boolean
AND/OR/NOTwork insidejob_titleandskillsstrings. - Never use bulk enrich endpoints. Bulk charges on misses; per-find is free on a miss.
- On a miss, fall through to
tomba/email-finderrather than retrying.
tomba: the cheap email-intelligence rung
- Price
- 2–10¢ per call
- Latency
- ~2s (
email-finder) · ~12s (linkedin-finder) - Mode
- sync
Tomba and ContactOut are complementary, not substitutes: the 2026-08-20 probe measured ContactOut at 3× the hit rate, with Tomba still adding roughly 2 fills per 10 ContactOut misses. So Tomba is the second rung, never the first. It also bills on a miss, which ContactOut does not. Tomba covers two things no other vendor here does: every known email at a company plus its pattern (domain-search), and article URL → author + email (author-finder).
tomba/email-verifier(2¢): the primary deliverability check, real SMTP/MX verification on any address. Readdata.email.result(deliverable/undeliverable/risky).tomba/email-finder(4¢): name + company/domain → most likely email with a confidence score. The best rung after acontactout/linkedin-contactsmiss; preferdomainovercompanywhen known.tomba/linkedin-finder(5¢): LinkedIn profile URL → email (full: truereturns all associated emails). Use afteremail-finder, not instead of it.tomba/domain-search(4¢): company/domain → all known emails + the domain’s pattern. Optionaldepartment(engineering/sales/finance/hr/it/marketing/operations/management),country(2-letter),page/limit(10|20|50). Good first step when you only know the company.tomba/author-finder(4¢): article/blog URL → author name, email, socials. The hook for content-based prospecting.tomba/enrich(4¢): email → person + company profile in one call. Escalate tonyne/person-enrichonly when you need phone/social depth.tomba/phone-finder(10¢): email/domain/LinkedIn → phone. The cheap rung before Nyne when only a number is missing.
# 1) name + domain → likely email
curl -X POST https://vaaya.ai/api/run/tomba/email-finder \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain": "stripe.com", "full_name": "Jane Doe"}'
# 2) verify before any real send
curl -X POST https://vaaya.ai/api/run/tomba/email-verifier \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "jane.doe@stripe.com"}'Gotchas
linkedin-finderis slow (~12s median) and throws transient upstream 5xx on ~20% of calls; a retry usually clears it.linkedin-findercan return a personal-domain or previous-company email. Always runtomba/email-verifieron the answer and sanity-check the domain against the target company.
icypeas: the second rung, on different infrastructure
- Price
- finder 4¢ · verifier 2¢ · domain scan 4¢ · poll 1¢
- Latency
- usually a few seconds end to end
- Mode
- async: launch, then poll
icypeas/result
Icypeas prices match Tomba (finder 4¢, verifier 2¢) but run on different infrastructure. Fall through Tomba ↔ Icypeas on a miss, or cross-check a risky Tomba verdict before a send that matters. All Icypeas searches are async: the launch returns { "item": { "_id": ... } } immediately; poll icypeas/result (1¢) with that id every 3–5 seconds until items[0].status leaves NONE/SCHEDULED/IN_PROGRESS.
# launch → { "item": { "_id": "..." } }
curl -X POST https://vaaya.ai/api/run/icypeas/email-search \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"firstname": "Jane", "lastname": "Doe", "domainOrCompany": "stripe.com"}'
# poll every 3-5s (1¢ per poll)
curl -X POST https://vaaya.ai/api/run/icypeas/result \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"id": "<item._id>"}'icypeas/email-search(4¢): name + company/domain → professional email with a certainty grade (ultra_sure/sure/…) and MX provider. Prefer a bare domain indomainOrCompany.icypeas/email-verification(2¢): SMTP-level deliverability on any address; the second opinion when Tomba saysrisky.icypeas/domain-scan(4¢): a domain’s role-based/generic inboxes (contact@, support@, admin@…). Complementstomba/domain-search, which lists people. Use this when any reachable inbox will do.icypeas/result(1¢): fetch/poll byid, or list recent searches with{"mode": "single", "limit": 10}.
Gotchas
- Status semantics:
FOUND/DEBITED= hit (readitems[0].results);NOT_FOUND/DEBITED_NOT_FOUND= processed but empty;BAD_INPUT/INSUFFICIENT_FUNDS/ABORTED= terminal errors. - The vendor caps result reads at 30/minute. Poll every 3–5 seconds, no tighter.
nyne: deep enrich, reverse lookup, investor intel
- Price
- person 55¢ (lite 30¢) · funders 30¢ · interactions 30¢
- Latency
- async; polls usually complete in under a second
- Polling
nyne/result(free)- Match rate
- ~92%
All Nyne actions are async: the submit returns 202 with a request_id; poll nyne/result (free) with the same endpoint name until status is "completed", then read result. nyne/person-enrich is the reverse lookup: “who is this email / phone number / Instagram handle?” Pass any one identifier (email, phone, social_media_url, or name + company) and get back best work/personal emails, alternate emails, phone numbers, social profiles, work history, and seniority.
# reverse lookup from any one identifier
curl -X POST https://vaaya.ai/api/run/nyne/person-enrich \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "jane@acme.com"}'
# → 202 + request_id; poll until status is "completed" (free)
curl -X POST https://vaaya.ai/api/run/nyne/result \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"endpoint": "person/enrichment", "request_id": "req_..."}'nyne/person-enrich(55¢, or 30¢ withlite_enrich: true): LinkedIn, X, Instagram, GitHub, and Facebook URLs all work insocial_media_url; for a bare handle, build the profile URL first.nyne/company-funders(30¢): investor intel for a fundraise. Pass the investor’scompany_nameorcompany_domain→ thesis, partners with LinkedIn URLs, average check size, rounds, recent investments. Qualify funds before outreach.nyne/person-interactions(30¢): engagement mining.social_media_url+typeofreplies|followers|following(plustweet_idfor one post) → the people engaging with a launch or topic, with the engagement as the outreach hook.
Gotchas
- Billing happens at submit, not at poll. The poll itself is free.
- Escalate here from
tomba/enrich(4¢) only when you need phone numbers or social depth; it’s a 14× price jump.
openfunnel: company discovery
- Price
- lookalikes ~1¢/company · tech pages 40¢ · intent 20¢/qualified
- Mode
- sync shortlists · async at scale
- Polling
openfunnel/results(free helper)
Exa, ContactOut, and Nyne find people; OpenFunnel finds companies. The chain: OpenFunnel (which companies) → exa/search with category: "people" at those companies (who to talk to) → the email waterfall (verified contacts).
curl -X POST https://vaaya.ai/api/run/openfunnel/lookalikes \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"seed_domains": ["stripe.com", "brex.com"],
"limit": 50,
"locations": ["USA"]
}'openfunnel/lookalikes(sync, ≤100, ~1¢/company): companies resemblingseed_domains(≤10, your closed-won accounts) and/or aquery. Filters:min_employees/max_employees,funding_stages,locations.openfunnel/lookalikes-bulk(async, ≤2000/call): for more than 100 results. Never paginate the sync action to get there.openfunnel/tam-build(async): the entire market for a plain-English ICP, thousands of companies, billed per company delivered. Pollopenfunnel/resultswith{"kind": "tam"}, page viacursor, and useopenfunnel/job-control(pause/cancel) to cap spend. Reach for it when the question is “everyone we could sell to”, not for shortlists.openfunnel/tech-companies(sync, 40¢/page of 50): companies whose recent job posts mention a tech.variationscovers alternate phrasings;include_evidencereturns the job-post snippet, the outreach hook. The competitor-displacement and “sells-to-users-of-X” play.openfunnel/tech-intent(async, 20¢/qualified): same, but an LLM verifies each company against anactivity(“migrating off Redshift”). Keeplimit≤25; it’s the priciest, highest-precision signal.openfunnel/deep-research(sync, 20¢): qualify one domain against anactivity_question(job posts) and/orqualifier_question(LinkedIn org). Run it before drafting to a big account. The answer plus sources feed the message hook.- Free helpers:
openfunnel/lookup-companies(canonicalize ≤100),openfunnel/options(filter vocabularies),openfunnel/results,openfunnel/job-control,openfunnel/balance.
Gotchas
limitonlookalikesdefaults to 10 upstream. Always set it.locationstakes ISO alpha-3 codes:USA, notUS.lookup-companiestakes objects like{"domain": "x.com"}or{"name": "X"}, never bare strings.- Async semantics: the submit returns a
job_id; pollopenfunnel/resultsuntilstatusis"completed". A null cursor on a running job does not mean done. Empty results are never billed; cancelling keeps and bills only what was already delivered.
theirstack: job postings and technographics
- Price
- jobs 40¢ · companies 60¢ · per-company lookups 25¢
- Billing
- per row returned;
limitis required - Mode
- sync
TheirStack is the raw data layer under the hiring-signal tools: direct filter queries over job postings themselves, plus cheap per-company tech-stack and buying-intent lookups with confidence and first/last-seen dates. Routing versus the neighbors: openfunnel/tech-companies and tech-intent answer “which companies use/need X” with LLM qualification; akta/job-posts returns one company’s postings inside an Akta profile; TheirStack is for precise posting-level filters: title, description, salary band, seniority, remote, posting date, tech mentioned.
curl -X POST https://vaaya.ai/api/run/theirstack/jobs \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"job_title_or": ["Head of Sales"],
"job_country_code_or": ["US"],
"posted_at_max_age_days": 14,
"limit": 10
}'theirstack/jobs(40¢, ≤10 postings): search job posts across thousands of career sites and boards. The hiring-signal primitive: who’s hiring for role X with tech Y right now.theirstack/companies(60¢, ≤5 companies): companies by firmographics (industry, headcount, revenue, funding stage), tech stack, and active hiring (job_filters+min_num_jobs_found), with the matching jobs and techs attached. The displacement/ABM finder: “Series B US companies hiring for Kubernetes”.theirstack/technographics(25¢): one company (bycompany_domain) → its technologies with confidence (low/medium/high), job-mention counts, and first/last dates seen. The evidence-dated alternative toakta/company-enrichwithsections: ["technology"]when you want the raw stack.theirstack/buying-intents(25¢): one company → buying-intent topics detected in its job posts, with confidence and dates. The cheaper single-account rung when a topic-level signal is enough and you don’t needopenfunnel/deep-research’s LLM answer.theirstack/tech-catalog(1¢): resolve free text to the case-sensitive slugs the filters need:{"q": "kubernetes"}, withkeyword_type: "technology"for techs only orkeyword_type_not: "technology"for intent topics only.
Gotchas
- The vendor bills per row returned, so
limitis required (≤10 on jobs, ≤5 on companies). Page withpagerather than raising limits. - Technology-slug filters are case-sensitive. Always resolve slugs through
theirstack/tech-catalogfirst. theirstack/jobsmust include a date filter (posted_at_max_age_days) or a company filter (company_domain_or); upstream rejects unbounded queries.
signalbase: real-time GTM signal events
- Price
- 25¢ per call, flat, whatever
limitreturns - Coverage
- 39,616 signals in the 30 days to 2026-08-10: 1,165 funding, 456 M&A, 9,108 job changes, 28,887 hiring
- Mode
- sync
Signalbase is the event stream: who raised, got acquired, changed jobs, or started hiring, with a date window on every query. It is the cheapest way to sweep a whole market, because the vendor bills one credit per CALL rather than per row. Set limit high (50 to 100) and page with page; issuing many narrow calls costs the same per call and returns less.
curl -X POST https://vaaya.ai/api/run/signalbase/funding \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"date_preset": "last_30d", "round": "Series A", "countries": "US", "limit": 50}'signalbase/funding(25¢): rounds with type, amount, currency, company firmographics inline (headcount, country, industry, LinkedIn) and a confidence score. Filter withdate_preset("last_30d") ordateFrom/dateTo, plusround,round_flavor,amount_min/amount_max,investor_name,countries,categories.signalbase/acquisitions(25¢): M&A events with both sides and the deal amount.acquiring_companyandacquirer_countriesfilter the buyer.signalbase/job-changes(25¢): executive moves filtered bypositions,departments,senioritiesandnew_role. Names are GDPR-masked; the LinkedIn URL is present.signalbase/hiring(25¢): open positions with team size and applicant counts. Wide hiring sweeps belong here because the price is flat; posting-level salary, tech and description filters belong intheirstack/jobs.signalbase/investors(25¢): the investor database acrosstype(vc, angel, pe, corporate, government, accelerator, family_office, hedge_fund, crowdfunding) withticket_size_min/maxandheadquarters.signalbase/companiesandsignalbase/people(25¢ each): company search independent of any signal, and people search that carries the matched signal inline so each result explains why now.
Gotchas
- List filters are COMMA-SEPARATED STRINGS, not arrays:
countries: "US,GB". - Sorting uses
sort_byas the parameter name but validates against an internal enum:occurred_at,discovered_at,amount,employee_count,founded_year. PassingdateorsortByreturns a 400 before billing. - Most rows are sourced by watching VC portfolio pages rather than news, so
discoveredAtis often the time a page changed rather than the time a round was announced. On a 10-row sample taken 2026-08-27, 9 of 10 primary sources were portfolio pages and one signal dated that day traced to an article from 2024. Check the source before you treat a row as breaking news. - Investors come back empty on most funding rows (2 of 10 in the same sample). When you need who led a round, which partner sat on it, or the angels, use
fundable/deal-investors.
fundable: the funding graph
- Price
- 10¢ per billable row, charged on rows RETURNED · 1¢ lookups
- Coverage
- 97k venture-backed companies, 150k+ rounds, 64k institutional investors, 34k angels
- Mode
- sync
Fundable answers who was actually in a funding round. fundable/deals returns rounds with a written summary, the amount, the valuation and the news articles behind them. fundable/deal-investors then opens one round into its full lineup: the firms with a lead_investor flag, the individual partner credited on that deal under personnel, and the angels, each with a profile link. Nothing else on this page resolves a partner to a specific round.
curl -X POST https://vaaya.ai/api/run/fundable/deals \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"page_size": 10, "sort_by": "most_recent_deal", "deal": {"date_start": "2026-08-20", "financing_types": [{"type": "SERIES_A"}]}}'fundable/deals(10¢ per row returned,page_size≤25): rounds filtered bydeal.date_start/date_end(announcement date) ordeal.created_start/created_end(when Fundable ingested the round, which is the field to page on for gap-free incremental syncs), anddeal.financing_typesas objects:[{"type": "SEED", "pre": true}]. Rows carrycompany_id,investor_idsandangel_investor_idsas bare UUIDs.fundable/deal-investors(10¢ flat): one deal UUID returns the whole lineup at one price, however many investors it holds. Firms carrylead_investor, a domain and a LinkedIn URL;personnelcarries the partner on that round;angel_investorscarries name, LinkedIn and Twitter.fundable/company(10¢): resolve a deal row’scompany_idto a profile with the domain, employee band,total_raisedandlatest_valuation_usd. Also addressable bydomain,linkedinorcrunchbase.fundable/investor-dealsandfundable/person-deals(10¢ per row returned): walk a fund to its portfolio, or a person to every round they joined as an angel or as the partner on a firm’s deal.fundable/company-deals(10¢ per row returned): one company’s entire funding history as full deal objects.fundable/companyreturns only the latest round.fundable/company-search,fundable/investor-searchandfundable/person-search(1¢ each): resolve a name to Fundable’s own id, which is what the traversals take. Skip them when you already have a domain or LinkedIn URL.fundable/industry-searchandfundable/location-search(1¢): resolve"fintech"tofintech-e067and"san francisco"tosan-francisco-california.
Gotchas
locations,industriesandsuper_categoriesmatch on exact permalink. A hand-written value is dropped silently upstream, so the call returns unfiltered rows and still bills. Resolve every one through the two lookup endpoints first.- You are billed on rows RETURNED, not rows requested. Ask for 25 and match 2 and you pay for 2, so
page_size(required, ≤25) is only the ceiling your balance is checked against, not a budget you spend.deal-investorsandcompanybill flat, each being one billable unit. - There is no amount filter and no investor filter on
fundable/deals, despite what the vendor’s own docs claim. Both are rejected before billing. - Entity resolution is not perfect. On a 10-row sample one round was attributed to a same-named company, and
total_raisedcan lag the round attached to it. Trust the deal row and its source articles over the company aggregate. - Route wide, cheap event sweeps to
signalbase/funding(25¢ flat for up to 100 rows) and come here for the people in a round.
akta: private-company depth and news signals
- Price
- 4–35¢ per section · news ~2¢ per 10 articles
- Coverage
- 20M+ private companies, 70+ datapoints
- Mode
- sync
OpenFunnel finds which companies; Akta tells you everything about one: rich narrative sections with sources, plus de-duped, entity-resolved news. akta/company-search and akta/industry-search (both free) resolve a name (“Canva”) or free-text industry (“warehouse automation”) to Akta’s uuid or taxonomy code; domains work directly. Request only the sections you need:
curl -X POST https://vaaya.ai/api/run/akta/company-enrich \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"company": "canva.com", "sections": ["firmographic", "funding_detail"]}'| Price | Sections |
|---|---|
| 4¢ | trust_signal · company_hierarchy · digital_presence · financial_estimate · location |
| 7¢ | customer_profile · industry |
| 11¢ | management_profile · strategic_signal |
| 14¢ | firmographic · business_model · company_assessment · product_offering · technology |
| 21¢ | funding_detail |
| 35¢ | mna_and_investment |
akta/news(~2¢ per 10 articles,limit≤100): de-duped, entity-resolved news with sentiment, an AI summary, and tagged company mentions. Scope bycompany(website URL),industry(code fromindustry-search), or free-textquery. Additive filters:sentiment_list(positive/negative/neutral),type_list(tag codes:CM01fund-raising,WT01strategic hiring,SD01product launches,SD02partnerships),news_score_list(High/Medium/Low relevance), andstart_date(YYYY-MM-DD) for incremental polls.- Alt-data by domain or uuid:
akta/employee-reviews(11¢, ≤50/page) ·akta/product-reviews(11¢) ·akta/headcount-trends(18¢) ·akta/website-traffic(11¢) ·akta/job-posts(21¢) ·akta/social-posts(11¢). Hiring, growth, culture, and demand signals for qualifying accounts.
Gotchas
- Section names are singular:
firmographic, notfirmographics. - Run
akta/company-search(free) first when a company name is ambiguous.
spyfu: SEO and PPC competitor research
- Price
- 1–3¢/call
- Mode
- sync
- Settlement
- MPP, no API key
SpyFu answers the search-marketing questions about a competitor: the keywords a domain ranks for or bids on, its SERP positions, its ad history, and who it competes with. One gateway action, spyfu/query. Pass path, a SpyFu v2 API path such as apis/domain_stats_api/v2/getLatestDomainStats, plus that operation’s own query params, like domain. Allowed families: domain_stats_api, serp_api, keyword_api, competitors_api, cloud_ad_history_api, organic_history_api.
curl -X POST https://vaaya.ai/api/run/spyfu/query \
-H "Authorization: Bearer $VAAYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"path": "apis/domain_stats_api/v2/getLatestDomainStats", "domain": "stripe.com"}'Outreach discipline
Rules that keep deliverability and your sender reputation intact:
- Verify before every send.
tomba/email-verifier→deliverableis the gate; cross-check ariskyverdict withicypeas/email-verificationwhen the send matters. - Personalize every send. Generic blasts get sender accounts flagged. Reference something real: their post, their product, the trigger event.
- No bought lists. They bounce, and bounces kill deliverability. Build lists with search + enrichment instead.
- No cold WhatsApp, ever. It burns numbers and trust.
- Respect LinkedIn caps: roughly 25 invites/week and 30 DMs/day per account. Volume beyond that means a longer timeline or an email-first mix.
- Per-find enrichment only, never bulk. Bulk charges on misses; per-find is free on a miss.
- Sharpen a vague ICP before burning paid search. Nail down the revenue band, geography, and titles first. Both Exa and the ContactOut fallback take free text.