All integrations

GetProspect

BUSINESS · CRM & SUPPORT

People and company search, and enrichment one at a time or in bulk, on their key.

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

getprospect_delete_v2_user_settings_table_views_company_searchWRITE

Reset the Companies Search table view via DELETE /v2/user/settings/table-views/company-search. Discards the saved arrangement and returns the defaults. Free: consumes no credits. DESTRUCTIVE: discards the workspace's saved arrangement and returns GetProspect's defaults. There is no undo -- read the current view with the matching Get tool first if you may want to save it back afterwards.

api
getprospect_delete_v2_user_settings_table_views_people_exportWRITE

Reset the People Export column view via DELETE /v2/user/settings/table-views/people-export. Discards the saved set and returns the defaults. Free: consumes no credits. DESTRUCTIVE: discards the workspace's saved arrangement and returns GetProspect's defaults. There is no undo -- read the current view with the matching Get tool first if you may want to save it back afterwards.

api
getprospect_delete_v2_user_settings_table_views_people_searchWRITE

Reset the People Search table view via DELETE /v2/user/settings/table-views/people-search. Discards the saved arrangement and returns the defaults. Free: consumes no credits. DESTRUCTIVE: discards the workspace's saved arrangement and returns GetProspect's defaults. There is no undo -- read the current view with the matching Get tool first if you may want to save it back afterwards.

api
getprospect_get_v2_email_finderWRITE

Find a person's email (deprecated GET) via GET /v2/email-finder. DEPRECATED by GetProspect: the GET alias of Find a person's email, kept for backward compatibility. Same lookup, same result, same charge -- but the person's name and company travel in the URL's query string, where request logs keep them. Prefer the POST tool (getprospect_post_v2_email_find), which carries them in the body. Provide full_name or first_name + last_name, plus domain (preferred) or company; GetProspect answers 400 naming what is missing (measured 2026-09-19). The API key is never in the URL on either tool. COSTS 1 EMAIL CREDIT when a valid email is found; not-found and accept-all outcomes are free. A miss is HTTP 200, not 404: `success: false`, `errors[0].name == "NOT_FOUND"`, and `data` is still an object carrying `email: null` plus whatever domain information was resolved -- check `success`, not the status (measured 2026-09-19). A 408 TIMEOUT means the live lookup took too long; retry in a few minutes. When the workspace's credit balance reaches zero this call answers 402 PAYMENT_REQUIRED (`X-Limit-Reached: true`, `X-Limit-Type: credits`) before doing anything. That is a BILLING state, not a credential problem: the key is fine, and retrying unchanged fails the same way until the balance resets or is topped up. The email endpoints report the balance on every answer in `metadata.credits` (email_search, email_verification, reset_at).

api
getprospect_get_v2_email_verifierWRITE

Verify an email address (deprecated GET) via GET /v2/email-verifier. DEPRECATED by GetProspect: the GET alias of Verify an email address, kept for backward compatibility. Same check, same result, same charge -- but the address travels in the URL's query string, where request logs keep it. Prefer the POST tool (getprospect_post_v2_email_verify), which carries it in the body. `email` is required (400 "Email is required" without it, measured 2026-09-19). The API key is never in the URL on either tool. COSTS 1 EMAIL VERIFICATION CREDIT per check; a syntactically invalid address is answered `status: "invalid"` without a charge. When the workspace's credit balance reaches zero this call answers 402 PAYMENT_REQUIRED (`X-Limit-Reached: true`, `X-Limit-Type: credits`) before doing anything. That is a BILLING state, not a credential problem: the key is fine, and retrying unchanged fails the same way until the balance resets or is topped up. The email endpoints report the balance on every answer in `metadata.credits` (email_search, email_verification, reset_at).

api
getprospect_get_v2_enumsREAD

List all filter enums via GET /v2/enums. Returns every filter vocabulary used by the /v2 search endpoints in a single payload. Useful for building filter UIs at integration time. `data` maps each enum name to its accepted filter values - a flat array for most (e.g. `{ "company_types": ["Privately Held", ...] }`), except `industries` and `departments`, which are grouped by category (`{ "departments": { "C-Suite": ["Founder", ...], ... } }`), and `regions`, which maps each region accepted by the location filters to its member country codes (`{ "EMEA": ["DK", ...], ... }`). `countries` are ISO-3166-1 alpha-2 codes; clients map codes to names themselves. Free: consumes no credits and changes nothing in the workspace. PUBLIC: GetProspect answers this without any credential (measured 2026-09-19 -- 200 with no key), so a success here says nothing about whether the connection's key works.

api
getprospect_get_v2_enums_by_nameREAD

Get one filter enum via GET /v2/enums/{name}. Returns the accepted values for one filter vocabulary as `data` - a flat array for most, except `industries` and `departments` (an object of category -> values) and `regions` (an object of region -> member country codes). Name must be one of: industries, countries, employee_ranges, company_types, business_types, revenue_streams, keywords_sources, departments, seniorities, regions. 400 on any other name. Free: consumes no credits and changes nothing in the workspace. PUBLIC: GetProspect answers this without any credential (measured 2026-09-19 -- 200 with no key), so a success here says nothing about whether the connection's key works.

api
getprospect_get_v2_user_settings_table_views_company_exportREAD

Get the saved Company Export column view via GET /v2/user/settings/table-views/company-export. The caller's own export column set for this workspace, or the shipped defaults (`isDefault: true` -- the field is spelled `isDefault` on the wire, measured 2026-09-19, not the `is_default` of the vendor's prose; it reads `false` once an arrangement has been saved). Free: consumes no credits and changes nothing in the workspace.

api
getprospect_get_v2_user_settings_table_views_company_searchREAD

Get the saved Companies Search table view via GET /v2/user/settings/table-views/company-search. The caller's own arrangement for this workspace, or the shipped defaults when they have never saved one (`isDefault: true` -- the field is spelled `isDefault` on the wire, measured 2026-09-19, not the `is_default` of the vendor's prose; it reads `false` once an arrangement has been saved). Free: consumes no credits and changes nothing in the workspace.

api
getprospect_get_v2_user_settings_table_views_people_exportREAD

Get the saved People Export column view via GET /v2/user/settings/table-views/people-export. The caller's own export column set for this workspace, or the shipped defaults when they have never saved one (`isDefault: true` -- the field is spelled `isDefault` on the wire, measured 2026-09-19, not the `is_default` of the vendor's prose; it reads `false` once an arrangement has been saved). Free: consumes no credits and changes nothing in the workspace.

api
getprospect_get_v2_user_settings_table_views_people_searchREAD

Get the saved People Search table view via GET /v2/user/settings/table-views/people-search. The caller's own arrangement for this workspace, or the shipped defaults when they have never saved one (`isDefault: true` -- the field is spelled `isDefault` on the wire, measured 2026-09-19, not the `is_default` of the vendor's prose; it reads `false` once an arrangement has been saved). Free: consumes no credits and changes nothing in the workspace.

api
getprospect_post_v2_companies_bulk_enrichREAD

Enrich up to 50 companies via POST /v2/companies/bulk-enrich. Enrich up to 50 companies in one request. Each item takes the same identifiers as Companies Enrich and is matched independently (id, then linkedin_id, linkedin_url, domain, name); the response buckets items into matched, not_matched and invalid, echoing each item's identifier so you can correlate results. Enriching companies spends no credits. Free: consumes no credits and changes nothing in the workspace. Items are validated one by one: an unknown or malformed field inside an item moves THAT ITEM to the `invalid` bucket instead of failing the batch, and every outcome echoes the item's `identifier` so results correlate back to your rows. A missing or non-array `data` still fails the whole request with 400.

api
getprospect_post_v2_companies_enrichREAD

Enrich a company via POST /v2/companies/enrich. Retrieve the full profile of one company - industry, headcount, locations, domains and LinkedIn data. Look it up by GetProspect id, LinkedIn id or URL, web domain, or name; when several identifiers are sent the strongest wins (id, then linkedin_id, linkedin_url, domain, name). Enriching a company spends no credits. A miss is NOT a 404: it is HTTP 200 with `success: false` and `errors[0].name == "NOT_FOUND"` (measured 2026-09-19 against an invented domain), so check `success` rather than the status. Free: consumes no credits and changes nothing in the workspace. Request bodies are strictly validated: an unknown field anywhere in the body fails the WHOLE request with 400 VALIDATION_ERROR, naming the field in `errors[].payload.field`; nothing is silently ignored, so do not guess field names.

api
getprospect_post_v2_companies_searchREAD

Search companies via POST /v2/companies/search. Search our company database by identity, company attributes and free-text keywords. Look up specific companies by name, domain or LinkedIn id, or build a target list by industry, location (city, state, country or region), headcount, founded year, company type, business type, revenue stream and NAICS codes: filters AND together, and at least one include condition is required. Searching is free. Results return 25 per page, sorted by relevance when keywords are present and by followers otherwise - see the body parameters below for every filter and its nuances. Free: consumes no credits and changes nothing in the workspace. Request bodies are strictly validated: an unknown field anywhere in the body fails the WHOLE request with 400 VALIDATION_ERROR, naming the field in `errors[].payload.field`; nothing is silently ignored, so do not guess field names. Results come 25 per page, up to page 1000 (25,000 results per query); pass `page` (1-based) and read `metadata.pagination` -- `page`, `per_page`, `total_pages`, `total_count` -- stopping once `page >= total_pages`, never on a short page. A search that reports more matches than the cap needs narrower filters, not deeper paging. Enum-backed filters accept exact, case-sensitive values only -- read them from getprospect_get_v2_enums (or getprospect_get_v2_enums_by_name) rather than inventing close-enough strings: "vp" matches nothing, "VP" does.

api
getprospect_post_v2_email_findWRITE

Find a person's email via POST /v2/email/find. Find the verified business email address of a specific person. Inside `data`, provide the person's name (full_name, or first_name + last_name) plus their company (domain preferred, or company name). COSTS 1 EMAIL CREDIT when a valid email is found; not-found and accept-all outcomes are free. Request bodies are strictly validated: an unknown field anywhere in the body fails the WHOLE request with 400 VALIDATION_ERROR, naming the field in `errors[].payload.field`; nothing is silently ignored, so do not guess field names. A miss is HTTP 200, not 404: `success: false`, `errors[0].name == "NOT_FOUND"`, and `data` is still an object carrying `email: null` plus whatever domain information was resolved -- check `success`, not the status (measured 2026-09-19). A 408 TIMEOUT means the live lookup took too long; retry in a few minutes. When the workspace's credit balance reaches zero this call answers 402 PAYMENT_REQUIRED (`X-Limit-Reached: true`, `X-Limit-Type: credits`) before doing anything. That is a BILLING state, not a credential problem: the key is fine, and retrying unchanged fails the same way until the balance resets or is topped up. The email endpoints report the balance on every answer in `metadata.credits` (email_search, email_verification, reset_at).

api
getprospect_post_v2_email_verifyWRITE

Verify an email address via POST /v2/email/verify. Check whether an email address is deliverable. Pass the email inside `data`; the response reports its verification status along with domain health and whether the mailbox is free or disposable. Verification runs live and can take up to a minute - a 408 means retry in a few minutes. COSTS 1 EMAIL VERIFICATION CREDIT per check; a syntactically invalid address is answered `status: "invalid"` without a charge (measured 2026-09-19: the balance in `metadata.credits` did not move). Request bodies are strictly validated: an unknown field anywhere in the body fails the WHOLE request with 400 VALIDATION_ERROR, naming the field in `errors[].payload.field`; nothing is silently ignored, so do not guess field names. When the workspace's credit balance reaches zero this call answers 402 PAYMENT_REQUIRED (`X-Limit-Reached: true`, `X-Limit-Type: credits`) before doing anything. That is a BILLING state, not a credential problem: the key is fine, and retrying unchanged fails the same way until the balance resets or is topped up. The email endpoints report the balance on every answer in `metadata.credits` (email_search, email_verification, reset_at).

api
getprospect_post_v2_people_bulk_enrichWRITE

Enrich up to 50 people via POST /v2/people/bulk-enrich. Enrich up to 50 people in one request. Each item takes the same identifiers as People Enrich and is matched independently (strongest identifier wins); the response buckets items into matched, not_matched and invalid, echoing each item's identifier so you can correlate results. One failed item never fails the batch. Credits work like People Enrich: enrich_email is on by default and costs 1 email credit per newly revealed email, and enrich_phone costs 1 phone credit per lookup. SPENDS CREDITS BY DEFAULT, per item: `enrich_email` defaults to TRUE and costs 1 email credit per newly revealed email; `enrich_phone` costs 1 phone credit per lookup. Set `enrich_email: false` for free profile lookups. Items are validated one by one: an unknown or malformed field inside an item moves THAT ITEM to the `invalid` bucket instead of failing the batch, and every outcome echoes the item's `identifier` so results correlate back to your rows. A missing or non-array `data` still fails the whole request with 400. When the workspace's credit balance reaches zero this call answers 402 PAYMENT_REQUIRED (`X-Limit-Reached: true`, `X-Limit-Type: credits`) before doing anything. That is a BILLING state, not a credential problem: the key is fine, and retrying unchanged fails the same way until the balance resets or is topped up. The email endpoints report the balance on every answer in `metadata.credits` (email_search, email_verification, reset_at).

api
getprospect_post_v2_people_enrichWRITE

Enrich a person via POST /v2/people/enrich. Retrieve the full profile of one person you already know - identity, location, work history and contact fields. Look them up by GetProspect id, LinkedIn id or URL, email, or first name + last name + company; when several identifiers are sent the strongest wins (id, then linkedin_id, linkedin_url, email, name + company). A verified business email is found and revealed by default (1 email credit per newly revealed email; set enrich_email to false to skip), and enrich_phone additionally looks up a mobile phone for 1 phone credit. A miss is NOT a 404: the errors page documents -- and Company Enrich was measured 2026-09-19 to answer -- HTTP 200 with `success: false` and `errors[0].name == "NOT_FOUND"`, so check `success` rather than the status. Nothing is charged for a miss. SPENDS CREDITS BY DEFAULT: `enrich_email` defaults to TRUE and costs 1 email credit per newly revealed email (re-revealing an email this workspace already unlocked is free); `enrich_phone` costs 1 phone credit per lookup. Set `enrich_email: false` for a free profile lookup. Request bodies are strictly validated: an unknown field anywhere in the body fails the WHOLE request with 400 VALIDATION_ERROR, naming the field in `errors[].payload.field`; nothing is silently ignored, so do not guess field names. When the workspace's credit balance reaches zero this call answers 402 PAYMENT_REQUIRED (`X-Limit-Reached: true`, `X-Limit-Type: credits`) before doing anything. That is a BILLING state, not a credential problem: the key is fine, and retrying unchanged fails the same way until the balance resets or is topped up. The email endpoints report the balance on every answer in `metadata.credits` (email_search, email_verification, reset_at).

api
getprospect_post_v2_people_existsREAD

Check which LinkedIn profiles are known via POST /v2/people/exists. Checks up to 50 LinkedIn person profile URLs against GetProspect's people database and returns bucketed matched, not_matched, and invalid results. Matched people use the people search response shape, without other_positions, and with primary_position limited to job_title, normalized_job_title, and company.name. Free: consumes no credits and changes nothing in the workspace. Request bodies are strictly validated: an unknown field anywhere in the body fails the WHOLE request with 400 VALIDATION_ERROR, naming the field in `errors[].payload.field`; nothing is silently ignored, so do not guess field names.

api
getprospect_post_v2_people_searchWRITE

Search people via POST /v2/people/search. Search our people database by who a person is, what they do and where they work. Combine person filters (name, location), job filters (title, seniority, department, tenure, recent job change) and company filters (industry, headcount, location, keywords and more): filters AND together, and at least one include condition is required. Searching is free and every result reports email availability; set enrich_email or enrich_phone to reveal contact data for credits. Results return 25 per page, sorted by followers desc by default - see the body parameters below for every filter and its nuances. FREE with the defaults -- every result reports `email.status` and `mobile_phone.status` with `revealed: false` and no address or number (measured 2026-09-19). Setting `enrich_email: true` reveals each result's email for 1 credit each, and `enrich_phone: true` runs a live phone lookup for 1 phone credit per result with a LinkedIn URL -- on a 25-row page that is up to 25 credits per call. Request bodies are strictly validated: an unknown field anywhere in the body fails the WHOLE request with 400 VALIDATION_ERROR, naming the field in `errors[].payload.field`; nothing is silently ignored, so do not guess field names. Results come 25 per page, up to page 1000 (25,000 results per query); pass `page` (1-based) and read `metadata.pagination` -- `page`, `per_page`, `total_pages`, `total_count` -- stopping once `page >= total_pages`, never on a short page. A search that reports more matches than the cap needs narrower filters, not deeper paging. Enum-backed filters accept exact, case-sensitive values only -- read them from getprospect_get_v2_enums (or getprospect_get_v2_enums_by_name) rather than inventing close-enough strings: "vp" matches nothing, "VP" does. When the workspace's credit balance reaches zero this call answers 402 PAYMENT_REQUIRED (`X-Limit-Reached: true`, `X-Limit-Type: credits`) before doing anything. That is a BILLING state, not a credential problem: the key is fine, and retrying unchanged fails the same way until the balance resets or is topped up. The email endpoints report the balance on every answer in `metadata.credits` (email_search, email_verification, reset_at).

api
getprospect_post_v2_search_matching_titlesREAD

Preview matching job titles via POST /v2/search/matching-titles. Preview which job titles a boolean / Cartesian expression matches before you search with it. Send the same expression you would pass as person_job_title.boolean_search and get back the most common matching titles with a count for each. Counts are estimates over the whole database and do not take any of your other filters into account, so use them to sanity-check an expression, not to predict a result total. Returned titles are raw LinkedIn titles - the same values People Search returns as `job_title` - so one role appears once per spelling ("vp marketing" and "vp, marketing" are two rows). A position is matched on all of its titles, so a title can appear here because one of the person's other roles matched: an expression for `ceo` will list "Founder & CEO". Titles are also matched through their normalized catalog form, which is how a search finds non-English titles - and why a listed title can look unrelated to what you typed. That is what the search does; the preview shows it rather than hiding it. The expression must contain at least one term that is not excluded. The response metadata includes a `cached` flag noting whether the answer came from cache. Previews are free and consume no credits. Free: consumes no credits and changes nothing in the workspace. Request bodies are strictly validated: an unknown field anywhere in the body fails the WHOLE request with 400 VALIDATION_ERROR, naming the field in `errors[].payload.field`; nothing is silently ignored, so do not guess field names.

api
getprospect_post_v2_search_suggestREAD

Suggest filter values via POST /v2/search/suggest. Typeahead suggestions for the open-ended People Search and Company Search filters, plus person and company lookups by name. Send the text the user has typed so far (or nothing - an empty query browses each vocabulary, most popular first for locations, job titles and company keywords, so a picker can open pre-filled; `person` and `company` are the exceptions and need at least 2 characters) and one vocabulary type - location, job_title, industry, company_keywords, person or company - and get back up to 25 ready-to-use rows. For location, job_title, industry and company_keywords, each row carries a `value` you pass as-is to the matching filter (person_location / company_location, person_job_title, company_industry, company_keywords). For `person`, `value` feeds `person.name` (search everyone with that name) and `id` feeds `person.id` (pin exactly that one person); each row also carries their current job title and company with its logo. For `company`, `value` is the canonical company name and each row carries the id `company.id` (People Search) accepts, a domain attached to the company (its website when none is attached), logo, industry and employee range - matched by a prefix of the name or of any attached domain. Location suggestions include the structured parts (city, state, country, ISO country code) and a level; job-title suggestions map abbreviations like "ceo" to their canonical title and tolerate a rephrasing ("VP of Marketing" and "Marketing VP" both suggest "Vice President Marketing"); industry suggestions include the category group; company-keyword suggestions carry a `company_count` and match a prefix of any word, so "market" finds both "Marketing" and "Digital Marketing". Suggestions are free and consume no credits. For the closed vocabularies (departments, seniorities, countries, employee ranges and more) fetch the full lists from GET /v2/enums instead. Free: consumes no credits and changes nothing in the workspace. Request bodies are strictly validated: an unknown field anywhere in the body fails the WHOLE request with 400 VALIDATION_ERROR, naming the field in `errors[].payload.field`; nothing is silently ignored, so do not guess field names.

api
getprospect_put_v2_user_settings_table_views_company_exportWRITE

Save the Company Export column view via PUT /v2/user/settings/table-views/company-export. Replaces the whole set - the columns listed are the exported ones, in order. Locked columns must all be present. Free: consumes no credits. THIS IS A REPLACEMENT, NOT A PATCH: the columns you send are the whole arrangement, in order, and any column you omit is hidden -- so read the current view first and send the full list back with your changes in it. An empty or malformed body answers 400 VALIDATION_ERROR before anything is stored, and a valid one answers 200 with the stored arrangement echoed back (both measured 2026-09-19 on all four views; GetProspect drops `frozen: false` to absence when it echoes a saved view).

api
getprospect_put_v2_user_settings_table_views_company_searchWRITE

Save the Companies Search table view via PUT /v2/user/settings/table-views/company-search. Replaces the whole arrangement. Locked columns must all be present, `name` must lead, and frozen columns must be the leading run. Free: consumes no credits. THIS IS A REPLACEMENT, NOT A PATCH: the columns you send are the whole arrangement, in order, and any column you omit is hidden -- so read the current view first and send the full list back with your changes in it. An empty or malformed body answers 400 VALIDATION_ERROR before anything is stored, and a valid one answers 200 with the stored arrangement echoed back (both measured 2026-09-19 on all four views; GetProspect drops `frozen: false` to absence when it echoes a saved view).

api
getprospect_put_v2_user_settings_table_views_people_exportWRITE

Save the People Export column view via PUT /v2/user/settings/table-views/people-export. Replaces the whole set - the columns listed are the exported ones, in order. Locked columns must all be present. Free: consumes no credits. THIS IS A REPLACEMENT, NOT A PATCH: the columns you send are the whole arrangement, in order, and any column you omit is hidden -- so read the current view first and send the full list back with your changes in it. An empty or malformed body answers 400 VALIDATION_ERROR before anything is stored, and a valid one answers 200 with the stored arrangement echoed back (both measured 2026-09-19 on all four views; GetProspect drops `frozen: false` to absence when it echoes a saved view).

api
getprospect_put_v2_user_settings_table_views_people_searchWRITE

Save the People Search table view via PUT /v2/user/settings/table-views/people-search. Replaces the whole arrangement - the columns listed are the visible ones, in order. Locked columns must all be present, `name` must lead, and frozen columns must be the leading run. Free: consumes no credits. THIS IS A REPLACEMENT, NOT A PATCH: the columns you send are the whole arrangement, in order, and any column you omit is hidden -- so read the current view first and send the full list back with your changes in it. An empty or malformed body answers 400 VALIDATION_ERROR before anything is stored, and a valid one answers 200 with the stored arrangement echoed back (both measured 2026-09-19 on all four views; GetProspect drops `frozen: false` to absence when it echoes a saved view).

api

Put GetProspect behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.