# Surfe > Surfe (formerly Leadjet) is a B2B contact-data and sales-intelligence platform. Its public API searches and enriches people and companies — returning verified professional emails, mobile phone numbers, company firmographics and lookalike account recommendations — and is billed against separate email, mobile and search credit pools. Base URL `https://api.surfe.com/v2`, authenticated with a bearer API key. Surfe also runs a hosted MCP server and ships an official Go CLI. Generated by API Evangelist on 2026-08-13. Surfe publishes no llms.txt of its own: GET https://developers.surfe.com/llms.txt returned 404 and GET https://www.surfe.com/llms.txt returned 404 on 2026-08-13. This file is generated from the Surfe profile at https://github.com/api-evangelist/surfe and from Surfe's own public documentation. ## Getting started - [Quick start](https://developers.surfe.com/): base URL, first request, most-used endpoints - [API key](https://developers.surfe.com/api-key): one key per user, sent as `Authorization: Bearer {api-key}` - [Get an API key](https://app.surfe.com/api-settings) - [Credits and quotas](https://developers.surfe.com/credits-and-quotas): email, mobile and search credit pools; daily quotas - [Rate limits](https://developers.surfe.com/rate-limits): 10 requests/second per user, burst 20, resets every minute - [Responses and errors](https://developers.surfe.com/api-responses): `{"code", "message"}` envelope, 400/401/403/404/429/500 - [Changelog](https://developers.surfe.com/changelog) ## APIs - [People](https://developers.surfe.com/public-009-search-people-v2): `POST /v2/people/search`, `POST /v2/people/enrich`, `GET /v2/people/enrich/{id}`, `POST /v2/people/find-by-email` - [Companies](https://developers.surfe.com/public-011-search-companies): `POST /v2/companies/search`, `POST /v2/companies/enrich`, `GET /v2/companies/enrich/{id}` - [Recommendations](https://developers.surfe.com/public-019-v2-recommendations-icp-post): `POST /v2/recommendations/icp`, `GET /v2/recommendations/icp`, `POST /v2/recommendations/fetch` - [Credits](https://developers.surfe.com/public-017-get-credits): `GET /v2/credits` - [Search filters](https://developers.surfe.com/public-008-people-filters): `GET /v1/people/search/filters` (note: v1 path) ## Agent surfaces - [MCP server](https://developers.surfe.com/mcp): hosted remote server at `https://mcp.eu.surfe.com/mcp` (beta). OAuth 2.0 + PKCE; sign in once with your Surfe API key. 8 tools across People, Companies and Account. - [Surfer CLI](https://github.com/Surfe/surfer): official Go CLI, `brew install surfe/tap/surfer-cli`. JSON on stdout, `--json` for raw payloads, `SURFE_API_KEY` for non-interactive auth, and `surfer ai` prints a ready-made agent system prompt. - [Webhooks](https://developers.surfe.com/webhooks): `person.enrichment.completed`, `person.batch-enrichment.completed`, `company.enrichment.completed`. No signature verification is published. ## Specs and artifacts (API Evangelist) - [apis.yml](https://raw.githubusercontent.com/api-evangelist/surfe/refs/heads/main/apis.yml) - [OpenAPI — People](https://raw.githubusercontent.com/api-evangelist/surfe/refs/heads/main/openapi/surfe-people-api-openapi.yml) - [OpenAPI — Companies](https://raw.githubusercontent.com/api-evangelist/surfe/refs/heads/main/openapi/surfe-companies-api-openapi.yml) - [OpenAPI — Recommendations](https://raw.githubusercontent.com/api-evangelist/surfe/refs/heads/main/openapi/surfe-recommendations-api-openapi.yml) - [OpenAPI — Account](https://raw.githubusercontent.com/api-evangelist/surfe/refs/heads/main/openapi/surfe-account-api-openapi.yml) - [Authentication](https://raw.githubusercontent.com/api-evangelist/surfe/refs/heads/main/authentication/surfe-authentication.yml) - [Conventions](https://raw.githubusercontent.com/api-evangelist/surfe/refs/heads/main/conventions/surfe-conventions.yml) - [Error catalog](https://raw.githubusercontent.com/api-evangelist/surfe/refs/heads/main/errors/surfe-problem-types.yml) - [Rate limits](https://raw.githubusercontent.com/api-evangelist/surfe/refs/heads/main/rate-limits/surfe-rate-limits.yml) - [Plans and pricing](https://raw.githubusercontent.com/api-evangelist/surfe/refs/heads/main/plans/surfe-plans-pricing.yml) - [MCP manifest](https://raw.githubusercontent.com/api-evangelist/surfe/refs/heads/main/mcp/surfe-mcp.yml) - [Tool crosswalk](https://raw.githubusercontent.com/api-evangelist/surfe/refs/heads/main/mcp/surfe-tool-crosswalk.yml) - [Webhook catalog](https://raw.githubusercontent.com/api-evangelist/surfe/refs/heads/main/asyncapi/surfe-webhooks.yml) - [Data model](https://raw.githubusercontent.com/api-evangelist/surfe/refs/heads/main/data-model/surfe-data-model.yml) - [Agent skills](https://raw.githubusercontent.com/api-evangelist/surfe/refs/heads/main/skills/_index.yml) ## Company - [Website](https://surfe.com) - [Pricing](https://www.surfe.com/pricing/): Free $0, Essential $39/user/month, Pro $79/user/month - [Security](https://www.surfe.com/security/): ISO 27001 certified, GDPR compliant as processor and controller - [Status](https://status.surfe.com/) - [Blog](https://www.surfe.com/blog/) - [Help center](https://intercom.help/surfe/en/) - [GitHub](https://github.com/surfe) - [Terms and Conditions – API](https://www.surfe.com/terms-and-conditions-api/) - [Privacy policy](https://www.surfe.com/privacy-policy/) - API support: api.support@surfe.com · Security: security@surfe.com ## Notes for agents - There is **no idempotency key**. Enrichment and search calls spend credits, so a blind retry can be charged twice. Deduplicate inputs and persist `enrichmentID` from the 202 response. - There are **no rate-limit response headers** — no `RateLimit-*`, no `X-RateLimit-*`, no `Retry-After`. Back off on a fixed schedule with jitter. - Enrichment is asynchronous: start returns `enrichmentID`, then poll or take the webhook. Prefer the webhook; polling burns the same daily quota. - A malformed v2 request body can return **500, not 400**. Check the request shape before assuming a server fault. - Credit exhaustion is published as **403** in the responses reference and as **402** in the changelog. Treat both as out-of-budget.