Enrich Company Intelligence API
IP-to-company resolution and LinkedIn company-follower scraping.
IP-to-company resolution and LinkedIn company-follower scraping.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/enrich-so-company-intelligence-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Enrich Company Intelligence API
description: 'Enrich (enrich.so) is a person and company data enrichment API. From one REST interface it resolves professional profiles from an email address (reverse email lookup), finds and verifies professional email addresses, finds phone/mobile numbers, resolves a company and geolocation from an IP address, scrapes LinkedIn company followers, and searches a lead-finder database of people and organizations. All requests use the base URL https://dev.enrich.so/api/v3 and authenticate with an API key passed either in the `x-api-key` header or as `Authorization: Bearer`. Usage is metered against a prepaid credit balance; "not found" results are refunded.
Grounding note: the single-lookup endpoints in this document (POST /reverse-lookup/lookup, POST /email-finder, POST /email-validation, GET /reverse-lookup/phones, POST /ip-to-company, POST /company-follower, POST /lead-finder/search, POST /lead-finder/reveal) and their credit costs are confirmed from the live Enrich documentation. The batch / progress / results sub-paths are modeled from the documented batch-and-poll pattern (submit -> check progress -> get results) and their exact URL segments should be confirmed against the current docs before code generation. Modeled operations are marked with `x-endpoint-modeled: true`.'
version: '3.0'
contact:
name: Enrich
url: https://www.enrich.so
termsOfService: https://www.enrich.so/terms
servers:
- url: https://dev.enrich.so/api/v3
description: Enrich API v3
security:
- apiKeyHeader: []
- bearerAuth: []
tags:
- name: Company Intelligence
description: IP-to-company resolution and LinkedIn company-follower scraping.
paths:
/ip-to-company:
post:
operationId: resolveCompanyFromIp
tags:
- Company Intelligence
summary: Resolve company from IP
description: Resolves company, organization, and geolocation information from an IPv4 or IPv6 address. Results are cached for 7 days. 100 credits per request; not charged when no domain is found.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/IpToCompanyRequest'
responses:
'200':
description: Company and geolocation resolved.
content:
application/json:
schema:
$ref: '#/components/schemas/IpToCompanyResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'402':
$ref: '#/components/responses/InsufficientCredits'
'429':
$ref: '#/components/responses/RateLimited'
/company-follower:
post:
operationId: startCompanyFollowerScrape
tags:
- Company Intelligence
summary: Start company follower scrape
description: Starts an asynchronous scrape of a LinkedIn company's followers, with optional filters for country, state, job title, department, and seniority level. Credits are reserved upfront from max_limit and settled (excess refunded) when results are fetched. Returns a batchId.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyFollowerRequest'
responses:
'202':
description: Scrape started.
content:
application/json:
schema:
$ref: '#/components/schemas/StartCompanyFollowerResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'402':
$ref: '#/components/responses/InsufficientCredits'
/company-follower/{batchId}:
get:
operationId: getCompanyFollowerResults
tags:
- Company Intelligence
summary: Check scrape progress and get follower results
description: Returns scrape progress and, when complete, the follower profiles.
x-endpoint-modeled: true
parameters:
- name: batchId
in: path
required: true
schema:
type: string
responses:
'200':
description: Scrape status or follower results.
content:
application/json:
schema:
$ref: '#/components/schemas/CompanyFollowerResultsResponse'
'404':
$ref: '#/components/responses/NotFound'
components:
schemas:
EnrichmentMeta:
type: object
description: Metadata returned with every response, including remaining credit balance.
properties:
creditsCharged:
type: integer
creditsRemaining:
type: integer
cached:
type: boolean
IpToCompanyRequest:
type: object
required:
- ip
properties:
ip:
type: string
description: IPv4 or IPv6 address to resolve.
CompanyFollowerRequest:
type: object
required:
- companyUrl
- max_limit
properties:
companyUrl:
type: string
description: LinkedIn company URL to scrape.
max_limit:
type: integer
minimum: 1
maximum: 50000
countries:
type: array
items:
type: string
states:
type: array
items:
type: string
jobTitles:
type: array
items:
type: string
departments:
type: array
items:
type: string
levels:
type: array
items:
type: string
webhookUrl:
type: string
skipCache:
type: boolean
ErrorEnvelope:
type: object
properties:
success:
type: boolean
example: false
error:
type: object
properties:
code:
type: string
message:
type: string
StartCompanyFollowerResponse:
type: object
properties:
success:
type: boolean
data:
type: object
properties:
batchId:
type: string
creditsReserved:
type: integer
perItemCost:
type: integer
IpToCompanyResponse:
type: object
properties:
success:
type: boolean
meta:
$ref: '#/components/schemas/EnrichmentMeta'
data:
type: object
properties:
domain:
type: string
organization:
type: string
country:
type: string
region:
type: string
city:
type: string
latitude:
type: number
longitude:
type: number
timezone:
type: string
isp:
type: string
usageType:
type: string
CompanyFollowerResultsResponse:
type: object
properties:
success:
type: boolean
data:
type: object
properties:
status:
type: string
followers:
type: array
items:
type: object
responses:
InsufficientCredits:
description: Not enough credits to complete the request.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
Unauthorized:
description: Missing, invalid, or disabled API key.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
NotFound:
description: No matching record was found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
RateLimited:
description: Rate limit exceeded. Includes a Retry-After header.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
securitySchemes:
apiKeyHeader:
type: apiKey
in: header
name: x-api-key
description: API key (prefixed sk_) passed in the x-api-key header.
bearerAuth:
type: http
scheme: bearer
description: API key passed as Authorization Bearer token.