Prospeo does two jobs. It finds and verifies contact details for people you name, and it searches its own database of 200 million contacts when you do not have a list yet. Both run in bulk.
Prospeo can start a list or finish one. In the default hyreflow waterfall it is among the first enrichers tried.
run both databases and merge, the coverage rarely overlaps completely
clear the addresses before outreach
the waterfall for whatever Prospeo could not find
file the longlist against the role it was built for
A skill is a whole pipeline your agent already knows. These ones call Prospeo as part of the run.
Sweep Layoff Signal news, source displaced talent via GitHub + Apollo, enrich via Prospeo, push to outreach.
Top GitHub contributors at top companies. Enrich via Prospeo for a never-resting senior engineering pipeline.
Read the CV with claude, map who would actually want them via TheirStack + Apollo, name the hiring manager via Prospeo, send the anonymized profile through Instantly. Stops at the reply.
Every tool ships with a written playbook, and the agent loads it before the first call. Auth, rate limits, what each call costs, which actions need your approval, and the mistakes worth avoiding. It is the difference between an agent that knows the tool and one that guesses at it.
Read the Prospeo docs →HOW in lib/prospeo.py. Docs cached at reference/docs/prospeo/raw/.
https://api.prospeo.io · Auth: header X-KEY (env PROSPEO_API_KEY; never hardcode). All endpoints POST + JSON; consume credits on a found result.Live: enrich_person (/enrich-person — data{first_name,last_name,full_name,linkedin_url,email,company_name,company_website,company_linkedin_url,person_id} + only_verified_email/enrich_mobile/only_verified_mobile), bulk_enrich_person (≤50), enrich_company, bulk_enrich_company (≤50), search_person (200M+ contacts, 30+ filters), search_company (30M+), search_suggestions, account_information (safe pilot). Endpoint index: reference/docs/prospeo/raw/endpoints.md.
email_finder, domain_search, mobile_finder, social_url_enrichment, email_verifier, linkedin_email_finder are deprecated (sunset 2026-03-01) — kept as thin wrappers but migrate to enrich_person/search_person. enrich_person(enrich_mobile=True) = 3.4 credits (vs 0.4 for email).
Enrichment layer: shortlist → Prospeo for emails/phones → validate → ATS/sequencer.
Field-shape note: these are vendor-native operational notes. The client returns the raw vendor JSON and uses the method names in this file — read field shapes accordingly (no normalized-wrapper /
result.data.prefix).
search_person/search_company to build lists -> enrich_person/enrich_company for detail.search_person is a free masked preview; search_company bills 0.4 credits per result. Person search supports job-title boolean operators, department, seniority, industry, headcount, technology, location.enrich_mobile: true costs 3.4 credits (vs 0.4 for email-only) - only when phone outreach is explicitly requested.lib/prospeo.pyImport: from lib.prospeo import Prospeo → instantiate Prospeo() (reads key from env). Base: https://api.prospeo.io. Generic passthrough: request(method, path, *, params, json).
account_information(payload: dict | None = None) -> dict — POST /account-information — usage/renewal/credits (safe read-only pilot).bulk_enrich_company(payload: dict) -> dict — POST /bulk-enrich-company — up to 50 companies per call.bulk_enrich_person(payload: dict) -> dict — POST /bulk-enrich-person — up to 50 people per call.domain_search(payload: dict) -> dict — DEPRECATED → search_person/search_company. POST /domain-search.email_finder(payload: dict) -> dict — DEPRECATED → enrich_person. POST /email-finder (legacy work-email finder).email_verifier(payload: dict) -> dict — DEPRECATED. POST /email-verifier — verify an email address.enrich_company(payload: dict) -> dict — POST /enrich-company — company data enrichment.enrich_person(data: dict, *, only_verified_email: bool | None = None, enrich_mobile: bool | None = None, only_verified_mobile: bool | None = None) -> dict — POST /enrich-person — enrich one person (replaces email-finder/mobile-finder/social).linkedin_email_finder(payload: dict) -> dict — DEPRECATED → enrich_person. POST /linkedin-email-finder.mobile_finder(payload: dict) -> dict — DEPRECATED → enrich_person(enrich_mobile=True). POST /mobile-finder.search_company(payload: dict) -> dict — POST /search-company — query 30M+ companies.search_person(payload: dict) -> dict — POST /search-person — query 200M+ contacts with 30+ filters.search_suggestions(payload: dict) -> dict — POST /search-suggestions — canonical filter-value autocomplete before a search.social_url_enrichment(payload: dict) -> dict — DEPRECATED → enrich_person(data={'linkedin_url': ...}). POST /social-url-enrichment.