Skip to content
GridRouterhome

Search

Search providers, capabilities and pages

Docs
Concepts

Waterfall templates

Every built-in waterfall template, its inputs, outputs, capabilities, speed, run mode and list-price cost, generated from the template library.

Before you start

A template is a prebuilt waterfall. Each step names a capability rather than a vendor, so the router chooses the vendors unless you pin them. Browse them with the explanations of each step at /waterfalls/templates. This page is generated from the same library as the API (GET /v1/waterfalls/templates).

Status

StatusMeaning
ReadyRouted vendors can run every stage today on your own vendor keys. availability.vendor_keys lists the keys that unlock it; one key per stage is enough.
SandboxRuns on the sandbox-* vendors with a grid_test_ key, no vendor key needed. Sandbox calls are priced like real ones and draw on your credit. Use the scenario input to script hits, misses and timeouts.
PreviewVendors document the capability publicly, but none is routed yet. You can read the steps; creating one returns 422 validation_failed.

Costs are list prices per run from the catalog: the minimum is the cheapest vendor per stage and the maximum is every eligible vendor trying, capped by the template's max_cost_micro. Conditional stages count 0 toward the minimum. With your own keys, GridRouter charges $0 and the vendor bills its own rate.

Contacts

TemplateStatusInputsOutputsCapabilitiesSpeed · modePer run
work-email Work email finder: Name + company domain → a verified work email.Readyfirst_name, last_name, domainemail, confidence, status, mx_providerpeople.email.find → email.verifyBalanced: one at a time, hedged · Sync (one request)$0.012–$0.078
email-from-profile Email from a profile URL: B2B profile URL → name and employer → verified work email.Readyprofile_urlfull_name, title, company_name, company_website, email, confidence, status, mx_providerpeople.enrich → people.email.find → email.verifyBalanced: one at a time, hedged · Sync (one request)$0.012–$0.090
mobile-number Mobile number finder: Profile URL or email → a mobile / direct dial.Readyprofile_url?, work_email?, personal_email? (Send at least one of profile_url, work_email or personal_email.)mobile_numberphone.mobile.findThorough: cheapest first · Sync (one request)$0.060
email-verification Email verification (consensus): One address → a verdict that several verifiers agree on.Readyemailstatus, mx_provideremail.verifyFast: vendors race · Batch (lists)$0.016
catch-all-resolution Catch-all resolution: Keep verifying until a verifier gives a definitive valid or invalid.Readyemailstatus, mx_provideremail.verifyThorough: cheapest first · Batch (lists)$0.0035–$0.016
reverse-email-lookup Reverse email lookup: Email → the person behind it: profile, title, employer.Readyemailprofile_url, full_name, first_name, last_name, title, company_name, company_website, location, country, work_experiencepeople.profile.find → people.enrichBalanced: one at a time, hedged · Sync (one request)$0.120–$0.132
phone-validation Phone validation: Phone number → valid, line type and carrier.Previewphonevalid, line_type, carrier_name, country_code, portedphone.lookupFast: vendors race · Batch (lists)—
dnc-check Do-not-call check: Phone number → line type, then DNC and litigator lists before dialing.Previewphoneline_type, listed, lists, litigator, reassignedphone.lookup → compliance.dnc.checkBalanced: one at a time, hedged · Batch (lists)—
sandbox-work-email Work email finder (sandbox): Swift, then Deep, then Sure on the sandbox vendors: runs on a test key, no vendor key needed.Sandboxfirst_name, last_name, domain, scenario?email, confidencepeople.email.findBalanced: one at a time, hedged · Sync (one request)$0.004–$0.028
sandbox-mobile-number Mobile number finder (sandbox): Cheapest-first mobile waterfall over the sandbox vendors.Sandboxprofile_url?, work_email?, scenario? (Send profile_url or work_email.)mobile_numberphone.mobile.findThorough: cheapest first · Sync (one request)$0.015–$0.090

People

TemplateStatusInputsOutputsCapabilitiesSpeed · modePer run
person-enrichment Person enrichment: Profile URL or email → title, seniority, employer and history.Readyprofile_url?, email? (Send profile_url, or email when you don't have it.)profile_url, full_name, first_name, last_name, title, company_name, company_website, location, country, work_experiencepeople.profile.find → people.enrichBalanced: one at a time, hedged · Sync (one request)$0.012–$0.132
job-change-detection Job change detection: Profile URL + the company you know them at → did they move, and where.Readyprofile_url, domain?job_change_detected, current_company, expected_company, summary, statussignals.job_changeBalanced: one at a time, hedged · Batch (lists)$0.036
decision-makers Decision maker by role: Company domain + job title → the person who holds it.Readydomain, job_titlename, first_name, last_name, profile_url, company_namepeople.role.findBalanced: one at a time, hedged · Sync (one request)$0.024
employee-list Employee list: Company domain → people who work there, billed per row.Readydomain, limit?people, total_countpeople.searchBalanced: one at a time, hedged · Sync (one request)$0.006–$0.036
social-profiles Social profiles: Email or name → the person's social profiles and handles.Previewemailprofile_url, platform, handle, followerssocial.profile.findBalanced: one at a time, hedged · Sync (one request)—

Company

TemplateStatusInputsOutputsCapabilitiesSpeed · modePer run
company-enrichment Company enrichment: Domain → firmographics: headcount, industry, revenue, funding, stack.Readydomainname, employees, industry, website, description, founded_year, revenue, total_funding, technologiescompany.enrichBalanced: one at a time, hedged · Sync (one request)$0.012
technographics Technographics: Domain → the technologies a company runs.Previewdomaintechnologies, technology_category, last_detectedcompany.technographicsFast: vendors race · Sync (one request)—
funding-financials Funding and financials: Domain → funding rounds, investors, revenue and filings.Previewdomaintotal_funding_usd, last_round_type, last_round_date, investors, revenue_usd, fiscal_yearcompany.funding → company.financialsBalanced: one at a time, hedged · Sync (one request)—
hiring-signals Hiring signals: Domain → open roles by department and hiring velocity.Previewdomainopen_roles, roles_by_department, growth_rate, job_titlesignals.hiring → jobs.company_postingsBalanced: one at a time, hedged · Sync (one request)—
intent-signals Intent surge by topic: Topic → accounts researching it more than usual this week.Previewtopiccompany_domain, score, surging, weeksignals.intentBalanced: one at a time, hedged · Async (poll or webhook)—
news-monitoring Company news: Domain or name → recent news mentions and events.Previewdomaintitle, url, published_at, source_name, summarynews.company_mentionsBalanced: one at a time, hedged · Sync (one request)—
reviews-reputation Reviews and reputation: Business domain or place → average rating, review count and recent reviews.Previewdomain?, place_id? (Send domain or place_id.)average_rating, review_count, text, platformreviews.businessBalanced: one at a time, hedged · Sync (one request)—
kyb-verification KYB and sanctions screening: Company → registry record, officers and a sanctions/PEP screen.Previewname, jurisdiction?registration_number, status, incorporation_date, registered_address, role, match_count, listsregistry.company_lookup → registry.officers → compliance.sanctions.screenThorough: cheapest first · Async (poll or webhook)—
local-business-lookup Local business lookup: Business name + area → address, phone, website, rating and hours.Previewquery, nearname, address, phone, website, rating, opening_hoursplaces.search → places.detailsBalanced: one at a time, hedged · Sync (one request)—
ads-intelligence Ads intelligence: Advertiser → what they run on Meta, Google and LinkedIn.Previewdomain, query?advertiser_name, headline, landing_url, first_seen, platformads.meta.search → ads.google.search → ads.linkedin.searchFast: vendors race · Async (poll or webhook)—
seo-presence SEO and SERP presence: Domain → traffic, backlinks and where it ranks for a keyword.Previewdomain, query?visits, referring_domains, authority, positionseo.traffic → seo.backlinks → serp.google.searchBalanced: one at a time, hedged · Async (poll or webhook)—
ip-to-company IP to company: Visitor IP → the company behind it, with firmographics.Previewipcompany_name, company_domain, is_isp, confidence, employees, industryip.company_lookup → company.enrichFast: vendors race · Sync (one request)—
sandbox-company-enrichment Company enrichment (sandbox): Race all three sandbox vendors and merge field by field.Sandboxdomain, scenario?name, employees, industry, technologiescompany.enrichFast: vendors race · Sync (one request)$0.018

Composite

TemplateStatusInputsOutputsCapabilitiesSpeed · modePer run
full-lead-enrichment Full lead enrichment: Name + domain → verified email, profile, title, mobile and company.Readyfirst_name, last_name, domain, profile_url?email, confidence, status, mx_provider, profile_url, full_name, title, company_name, company_website, location, country, work_experience, mobile_number, name, employees, industry, website, description, founded_year, revenue, total_funding, technologiespeople.email.find → email.verify → people.profile.find → people.enrich → phone.mobile.find → company.enrichBalanced: one at a time, hedged · Async (poll or webhook)$0.084–$0.282
account-research-brief Account research brief: Domain → firmographics, tech stack, hiring and news in one record.Previewdomainname, employees, industry, website, technologies, open_roles, titlecompany.enrich → company.technographics → signals.hiring → news.company_mentionsBalanced: one at a time, hedged · Async (poll or webhook)—
inbound-lead-enrichment Inbound lead enrichment: Form fill (email) → verified, with the person and company for routing.Readyemail, domain?status, mx_provider, profile_url, full_name, first_name, last_name, title, company_name, company_website, location, country, work_experience, name, employees, industry, website, description, founded_year, revenue, total_funding, technologiesemail.verify → people.profile.find → people.enrich → company.enrichFast: vendors race · Sync (one request)$0.120–$0.172
crm-hygiene CRM hygiene: CRM record → re-verified email, job change check and refreshed company.Readyemail?, profile_url?, domain? (Send whichever of email, profile_url and domain the record has.)status, mx_provider, job_change_detected, current_company, name, employees, industry, websiteemail.verify → signals.job_change → company.enrichThorough: cheapest first · Batch (lists)$0–$0.064
decision-maker-emails Decision maker + verified email: Domain + job title → the role holder and their verified work email.Readydomain, job_titlename, profile_url, company_name, email, confidence, status, mx_providerpeople.role.find → people.email.find → email.verifyBalanced: one at a time, hedged · Batch (lists)$0.024–$0.102
sandbox-email-then-mobile Email, then mobile (sandbox): Two sandbox stages: find the work email, then feed it to a mobile waterfall.Sandboxfirst_name, last_name, domain, scenario?email, mobile_numberpeople.email.find → phone.mobile.findBalanced: one at a time, hedged · Sync (one request)$0.004–$0.088

On the roadmap

These need a capability that no integrated vendor exposes through a public API yet, or an engine feature. They ship when one does.

TemplateCategoryWaiting on
personal-email Personal email finder: Profile URL → a personal address.contactsNo catalog capability returns personal addresses, and no listed vendor documents a public API for it.
company-domain-lookup Company name to domain: Company name → its website domain.companyThe catalog's company search filters by industry and size, not by name; no name-to-domain capability is defined yet.
lookalike-companies Lookalike companies: Seed domain → companies like it.companyNo lookalike capability in the catalog; only one listed vendor documents lookalike search publicly, below the bar for a new capability.
competitors Competitors: Domain → the company's direct competitors.companyNo competitor capability; listed vendors offer it behind sales-gated APIs or only as SEO keyword overlap.
company-profile-firmographics Company profile URL → firmographics: B2B company page URL → firmographics.companyCompany enrichment takes a domain; no catalog capability takes a company profile URL as input yet.
ecommerce-store-data E-commerce store data: Store domain → platform, apps, products and estimated sales.companycommerce.store_lookup is in the catalog, but its one listed vendor has no public API docs.
ai-lead-scoring AI lead scoring: Enriched lead → a fit score with reasons.compositeA stage input maps one field, so a model step can't be given the whole enriched record as its prompt, and no model endpoint is routed yet. Score the Inbound lead enrichment output in your CRM for now.
ai-account-brief AI-written account brief: Account research record → a five-line brief written by a model.compositeSame gap as AI lead scoring: composing a prompt from several stages needs a prompt-template step the engine doesn't have yet.
icp-list-building ICP list building: ICP filters → companies → people → verified emails.compositeCompany search is not routed yet and a run returns one record (no fan-out). Today: batch-run Decision maker + verified email over your target domains.
crm-dedupe CRM dedupe and normalize: Merge duplicate records and normalize names, titles and domains.compositeDedupe works across rows and no capability does it; CRM hygiene covers the per-record re-verification.

Use one

SurfaceCall
APIPOST /v1/waterfalls/from-template {"template":"work-email","pins":{"email":["hunter"]},"speed":"balanced","max_cost_micro":100000}
MCPwaterfall_templates, waterfall_template_get, waterfall_create_from_template, waterfall_estimate, waterfall_run, waterfall_status
SDKgrid.waterfalls.templates.list(), grid.waterfalls.fromTemplate("work-email"), grid.waterfalls.run(id, input)
DashboardWaterfalls → Templates → Use template opens it in the builder with its sample input in the test runner

pins maps a stage id to the vendor slugs tried first. The router still falls back to other vendors unless pins_only is true. speed is fast (race), balanced (one at a time, hedged) or thorough (cheapest first, 90 s deadline). The new waterfall is published as 1.0.0 unless you pass "publish": false.