Documentation

vaaya / docs / reference

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

NeedCallPriceMode
People and contacts from a query. Start here.vaaya/onefind, then onefind-deep2¢, then per filled fieldsync, async
Find people by ICP (primary)exa/search with category: "people"1¢/querysync
Find people by ICP (fallback)contactout/people-search1¢/profilesync
Reveal a work email (try first)exa/search + exa/contents1¢ + 0.1¢/URLsync
Reveal a verified email (fallback)contactout/linkedin-contacts10¢ (free on miss)sync
Email from name + company (the rung after a ContactOut miss)tomba/email-findersync
Email (next rung, on different infrastructure)icypeas/email-search4¢ + 1¢/pollasync
Deliverability (primary, any address)tomba/email-verifiersync
Deliverability (second opinion)icypeas/email-verification2¢ + 1¢/pollasync
Deliverability (alternate)contactout/email-verifysync
All emails at a company + its patterntomba/domain-searchsync
Generic inboxes at a domain (contact@, support@…)icypeas/domain-scan4¢ + 1¢/pollasync
Email behind a LinkedIn profiletomba/linkedin-findersync
Article author + their emailtomba/author-findersync
Email → person + company (cheap reverse lookup)tomba/enrichsync
Phone by email / domain / LinkedIntomba/phone-finder10¢sync
Deep person enrich / reverse lookup incl. phonesnyne/person-enrich55¢ (lite 30¢)async

Companies and signals

NeedCallPriceMode
Companies like your best customers (≤100)openfunnel/lookalikes~1¢/companysync
Whole-market TAM from an ICP (thousands)openfunnel/tam-buildper company deliveredasync
Companies running a tech (from job posts)openfunnel/tech-companies40¢/pagesync
Tech + LLM-verified buying intentopenfunnel/tech-intent20¢/qualifiedasync
Qualify one account against a questionopenfunnel/deep-research20¢sync
Raw job postings by title/tech/salary/datetheirstack/jobs40¢/≤10 jobssync
Companies by tech stack + active hiringtheirstack/companies60¢/≤5 companiessync
One company’s tech stack with confidence + datestheirstack/technographics25¢sync
One company’s buying-intent topicstheirstack/buying-intents25¢sync
Fresh funding rounds market-widesignalbase/funding25¢/≤100 rowssync
M&A events, acquirer and targetsignalbase/acquisitions25¢/≤100 rowssync
Executive job changessignalbase/job-changes25¢/≤100 rowssync
Hiring signals market-widesignalbase/hiring25¢/≤100 rowssync
Investors DB by type and ticket sizesignalbase/investors25¢/≤100 rowssync
Funding rounds with news sourcesfundable/deals10¢/row returnedsync
Who led a round, which partner, which angelsfundable/deal-investors10¢ flatsync
A fund’s or a person’s deal historyfundable/investor-deals10¢/row returnedsync
Name → Fundable id, to enter the graphfundable/company-searchsync
Deep private-company profile (pick sections)akta/company-enrich4–35¢/sectionsync
Entity-resolved news with sentimentakta/news~2¢/10 articlessync
Alt-data: reviews, headcount, traffic, jobs, socialakta/employee-reviews11–21¢sync
SEO and PPC competitor researchspyfu/query1–3¢sync
Investor intel (thesis, partners, check size)nyne/company-funders30¢async
Who follows / replied to a profile or postnyne/person-interactions30¢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-findericypeas/email-search. Verify every address before a real send with tomba/email-verifier.

exa: people discovery (try it first)

Price
1¢/query · exa/contents 0.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/search the person + company, then exa/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-contacts parameter is profile. Passing linkedin_url is rejected at schema validation: 0¢ and no transaction row, but also no result.
  • page_size on people-search IS the price: a page of 10 costs 10¢ whether or not you enrich anyone. Ask for what you need (max 25).
  • Boolean AND / OR / NOT work inside job_title and skills strings.
  • Never use bulk enrich endpoints. Bulk charges on misses; per-find is free on a miss.
  • On a miss, fall through to tomba/email-finder rather 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. Read data.email.result (deliverable / undeliverable / risky).
  • tomba/email-finder (4¢): name + company/domain → most likely email with a confidence score. The best rung after a contactout/linkedin-contacts miss; prefer domain over company when known.
  • tomba/linkedin-finder (5¢): LinkedIn profile URL → email (full: true returns all associated emails). Use after email-finder, not instead of it.
  • tomba/domain-search (4¢): company/domain → all known emails + the domain’s pattern. Optional department (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 to nyne/person-enrich only 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-finder is slow (~12s median) and throws transient upstream 5xx on ~20% of calls; a retry usually clears it.
  • linkedin-finder can return a personal-domain or previous-company email. Always run tomba/email-verifier on 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 in domainOrCompany.
  • icypeas/email-verification (2¢): SMTP-level deliverability on any address; the second opinion when Tomba says risky.
  • icypeas/domain-scan (4¢): a domain’s role-based/generic inboxes (contact@, support@, admin@…). Complements tomba/domain-search, which lists people. Use this when any reachable inbox will do.
  • icypeas/result (1¢): fetch/poll by id, or list recent searches with {"mode": "single", "limit": 10}.

Gotchas

  • Status semantics: FOUND/DEBITED = hit (read items[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¢ with lite_enrich: true): LinkedIn, X, Instagram, GitHub, and Facebook URLs all work in social_media_url; for a bare handle, build the profile URL first.
  • nyne/company-funders (30¢): investor intel for a fundraise. Pass the investor’s company_name or company_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 + type of replies | followers | following (plus tweet_id for 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 resembling seed_domains (≤10, your closed-won accounts) and/or a query. 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. Poll openfunnel/results with {"kind": "tam"}, page via cursor, and use openfunnel/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. variations covers alternate phrasings; include_evidence returns 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 an activity (“migrating off Redshift”). Keep limit ≤25; it’s the priciest, highest-precision signal.
  • openfunnel/deep-research (sync, 20¢): qualify one domain against an activity_question (job posts) and/or qualifier_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

  • limit on lookalikes defaults to 10 upstream. Always set it.
  • locations takes ISO alpha-3 codes: USA, not US.
  • lookup-companies takes objects like {"domain": "x.com"} or {"name": "X"}, never bare strings.
  • Async semantics: the submit returns a job_id; poll openfunnel/results until status is "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; limit is 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 (by company_domain) → its technologies with confidence (low/medium/high), job-mention counts, and first/last dates seen. The evidence-dated alternative to akta/company-enrich with sections: ["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 need openfunnel/deep-research’s LLM answer.
  • theirstack/tech-catalog (1¢): resolve free text to the case-sensitive slugs the filters need: {"q": "kubernetes"}, with keyword_type: "technology" for techs only or keyword_type_not: "technology" for intent topics only.

Gotchas

  • The vendor bills per row returned, so limit is required (≤10 on jobs, ≤5 on companies). Page with page rather than raising limits.
  • Technology-slug filters are case-sensitive. Always resolve slugs through theirstack/tech-catalog first.
  • theirstack/jobs must 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 limit returns
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 with date_preset ("last_30d") or dateFrom/dateTo, plus round, round_flavor, amount_min/amount_max, investor_name, countries, categories.
  • signalbase/acquisitions (25¢): M&A events with both sides and the deal amount. acquiring_company and acquirer_countries filter the buyer.
  • signalbase/job-changes (25¢): executive moves filtered by positions, departments, seniorities and new_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 in theirstack/jobs.
  • signalbase/investors (25¢): the investor database across type (vc, angel, pe, corporate, government, accelerator, family_office, hedge_fund, crowdfunding) with ticket_size_min/max and headquarters.
  • signalbase/companies and signalbase/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_by as the parameter name but validates against an internal enum: occurred_at, discovered_at, amount, employee_count, founded_year. Passing date or sortBy returns a 400 before billing.
  • Most rows are sourced by watching VC portfolio pages rather than news, so discoveredAt is 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 by deal.date_start/date_end (announcement date) or deal.created_start/created_end (when Fundable ingested the round, which is the field to page on for gap-free incremental syncs), and deal.financing_types as objects: [{"type": "SEED", "pre": true}]. Rows carry company_id, investor_ids and angel_investor_ids as bare UUIDs.
  • fundable/deal-investors (10¢ flat): one deal UUID returns the whole lineup at one price, however many investors it holds. Firms carry lead_investor, a domain and a LinkedIn URL; personnel carries the partner on that round; angel_investors carries name, LinkedIn and Twitter.
  • fundable/company (10¢): resolve a deal row’s company_id to a profile with the domain, employee band, total_raised and latest_valuation_usd. Also addressable by domain, linkedin or crunchbase.
  • fundable/investor-deals and fundable/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/company returns only the latest round.
  • fundable/company-search, fundable/investor-search and fundable/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-search and fundable/location-search (1¢): resolve "fintech" to fintech-e067 and "san francisco" to san-francisco-california.

Gotchas

  • locations, industries and super_categories match 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-investors and company bill 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_raised can 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"]}'
PriceSections
trust_signal · company_hierarchy · digital_presence · financial_estimate · location
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 by company (website URL), industry (code from industry-search), or free-text query. Additive filters: sentiment_list (positive/negative/neutral), type_list (tag codes: CM01 fund-raising, WT01 strategic hiring, SD01 product launches, SD02 partnerships), news_score_list (High/Medium/Low relevance), and start_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, not firmographics.
  • 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-verifierdeliverable is the gate; cross-check a risky verdict with icypeas/email-verification when 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.