Everything you need to integrate Enrichkit into your workflow. Simple key auth, JSON in, JSON out.
All API requests require an API key. Pass it via the X-API-Key header (preferred)
or Authorization: Bearer. Generate keys from your dashboard.
X-API-Key: ek_your_api_key_here # or Authorization: Bearer ek_your_api_key_here
Keys are prefixed with ek_. Keep them secret — do not expose them in client-side
code.
https://enrichkit.dev/api/v1Look up a professional profile by URL. Returns structured data including name, title, company, location, and experience.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Profile URL to enrich |
curl -X POST https://enrichkit.dev/api/v1/profile \ -H "X-API-Key: ek_your_key" \ -H "Content-Type: application/json" \ -d '{"url": "linkedin.com/in/janedoe"}'
{ "public_id": "marcela-vidal", "profile_id": "ACoAAC1a2bCdEfGhIjKlMnOpQrStUvWxYz", "profile_url": "https://www.linkedin.com/in/marcela-vidal", "first_name": "Marcela", "last_name": "Vidal", "headline": "CTO @ Terracotta — we make ERPs not suck | ex-Shopify", "summary": "I spent 6 years building commerce infra at Shopify...", "location": "Montreal, Quebec, Canada", "industry": "Software Development", "connections": 2777, "follower_count": 2882, "current_company": "Terracotta", "current_company_linkedin_url": "https://www.linkedin.com/company/terracotta-erp", "current_title": "Co-Founder & CTO", "profile_picture": "https://media.licdn.com/dms/image/v2/D5603AQ...", "experiences": [ { "title": "Co-Founder & CTO", "company": "Terracotta", "company_logo": "https://media.licdn.com/dms/image/v2/C4D0BAQ...", "company_linkedin_url": "https://www.linkedin.com/company/terracotta-erp", "location": "Montreal, QC", "description": "Vertical ERP for ceramics studios...", "start_date": { "month": 3, "year": 2022 }, "end_date": null } ], "educations": [ { "school": "McGill University", "degree": "Bachelor of Science", "field": "Computer Science", "start_date": { "month": null, "year": 2010 }, "end_date": { "month": null, "year": 2014 } } ], "skills": ["Ruby on Rails", "PostgreSQL", "TypeScript", ...], "certifications": [ { "name": "AWS Certified Solutions Architect – Associate", "authority": "Amazon Web Services (AWS)", "url": "https://www.credly.com/badges/abc123", "issued_date": { "month": 9, "year": 2021 } } ] }
The profile_id is a stable identifier that remains consistent across all endpoints
(profile, reactions, comments). Use it to match people across responses.
Retrieve recent posts from a profile or company page. Returns ~10 posts per page with pagination.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Profile or company URL |
pagination_token | string | No | Token from previous response to fetch next page |
{ "has_more": true, "pagination_token": "dXJuOmxpOmFjdGl2aXR5Ojc0MjIwND...", "posts": [ { "activity_id": "7442685916231475200", "post_url": "https://www.linkedin.com/feed/update/urn:li:activity:7442685916231475200/", "text": "We just mass-deleted 11,000 lines of code from Terracotta...", "created_at": 1774474600847, "posted_ago": "3d ago", "likes": 1265, "comments": 151, "reposts": 84, "media_type": "video", "media_url": "", "is_repost": false } ] }
Returns ~10 posts per page. Pass the pagination_token from the response to fetch
the next page. Keep paginating until has_more is false. Each page
costs 1 credit.
The media_type field can be "none", "image", "video", "carousel", or "article". The created_at timestamp is in milliseconds (Unix epoch).
Retrieve reactions on a specific post.
| Parameter | Type | Required | Description |
|---|---|---|---|
post_url | string | Yes | Post URL |
page | number | No | Page number (default 1) |
{ "page": 1, "total": 842, "has_more": true, "reactions": [ { "name": "Tomás Garza", "headline": "Founding eng @ Campfire · prev Vercel", "profile_url": "https://www.linkedin.com/in/tomasgarza", "profile_id": "ACoAAD4x5yZaBcDeFgHiJkLmNoPqRsTuVw", "profile_picture": "https://media.licdn.com/dms/image/v2/D5603AQ...", "reaction_type": "LIKE" } ] }
Reaction types include LIKE, CELEBRATE, LOVE, INSIGHTFUL, FUNNY, and SUPPORT. Use has_more to paginate through all reactions.
Retrieve comments on a specific post. Returns top-level comments sorted by relevance, with nested replies.
| Parameter | Type | Required | Description |
|---|---|---|---|
post_url | string | Yes | Post URL |
page | number | No | Page number (default 1, 10 comments per page) |
{ "page": 1, "total": 127, "has_more": true, "comments": [ { "name": "Tomás Garza", "headline": "Founding eng @ Campfire · prev Vercel", "profile_url": "https://www.linkedin.com/in/tomasgarza", "profile_id": "ACoAAD4x5yZaBcDeFgHiJkLmNoPqRsTuVw", "profile_picture": "https://media.licdn.com/dms/image/v2/D5603AQ...", "text": "This is exactly what we did at Vercel in 2021...", "created_at": 1774474600847, "posted_ago": "2d ago", "likes": 24, "reply_count": 5, "is_author": false, "edited": false, "pinned": false, "replies": [ { "name": "Marcela Vidal", "headline": "CTO @ Terracotta", "profile_url": "https://www.linkedin.com/in/marcela-vidal", "profile_id": "ACoAAC1a2bCdEfGhIjKlMnOpQrStUvWxYz", "is_author": true, "text": "Totally — we learned this the hard way", "likes": 8, "posted_ago": "1d ago" } ] } ] }
Each comment includes a replies array with the most relevant nested replies
(typically 1-3). The reply_count field shows the true total reply count. The is_author boolean indicates whether the commenter is the author of the original post. Use has_more to paginate through all top-level comments.
Look up a company by URL. Returns structured company data.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Company URL to enrich |
{ "name": "Campfire", "universal_name": "campfire-dev", "company_id": 84295321, "linkedin_url": "https://www.linkedin.com/company/campfire-dev", "website": "https://campfire.dev", "description": "Campfire replaces your internal tools sprawl...", "industries": ["Software Development"], "company_type": "Privately Held", "headquarters": "Berlin, Berlin, Germany", "founded_year": 2021, "employee_count": 12, "employee_range": "11-50", "follower_count": 1847, "specialities": ["internal tools", "developer tools", ...], "logo": "https://media.licdn.com/dms/image/v2/C560BAQ...", "phone": null, "tagline": "Internal tools that don't make you mass email the eng team" }
List employees at a company. Returns up to 49 results per page, with a maximum of 1,000 total results.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Company URL |
page | number | No | Page number (default 1, 49 per page) |
{ "page": 1, "total": 228, "has_more": true, "employees": [ { "name": "Noa Cavalcante", "headline": "Senior Engineer @ Campfire", "location": "Berlin, Germany", "profile_url": "https://www.linkedin.com/in/noa-cavalcante", "profile_id": "ACoAADz-uYYBRAmY1S_WF1VsQjCx9woYvJgTXEw", "profile_picture": "https://media.licdn.com/dms/image/v2/D4E03AQ..." } ] }
Returns up to 49 employees per page. Use has_more to paginate. Maximum 1,000
total results per company. The profile_id matches across all endpoints.
Returns your current usage, limits, and rate limit info.
{ "plan": "growth", "credits": { "remaining": 37550, "total": 50000, "resets_at": "2026-04-15T00:00:00Z" }, "rate_limit": { "requests_per_minute": 300 } }
Rate limits are enforced per API key based on your plan. Limits reset every minute on a sliding window.
| Plan | Requests / month | Requests / min |
|---|---|---|
| Starter | 10,000 | 100 |
| Growth | 50,000 | 300 |
| Pro | 200,000 | 600 |
When you hit a rate limit, the API returns 429 Too Many Requests with a Retry-After header.
Enrichkit uses standard HTTP status codes. Errors return a JSON body with a message field.
| Status | Meaning |
|---|---|
200 | Success |
400 | Bad request — invalid JSON or missing required field |
401 | Invalid, missing, or revoked API key |
403 | No active plan, or monthly quota exhausted |
429 | Rate limit exceeded — too many requests per minute |
502 | Upstream error — bad response from data source |
503 | Upstream unreachable — try again shortly |
{ "error": "quota_exceeded", "message": "No credits remaining. Upgrade your plan for more requests.", "credits": 0, "plan": "starter" }
Connect Enrichkit directly to AI tools like Claude, Cursor, and others via MCP (Model Context Protocol). Once connected, your AI assistant can look up profiles, companies, posts, and more — just by asking.
Go to Settings → Connectors → Add custom connector and enter:
https://enrichkit.dev/mcp?api_key=ek_your_api_key_here# Add with header auth claude mcp add --transport http enrichkit https://enrichkit.dev/mcp \ --header "X-API-Key: ek_your_api_key_here"
Add to .cursor/mcp.json in your project:
{ "mcpServers": { "enrichkit": { "url": "https://enrichkit.dev/mcp", "type": "http", "headers": { "X-API-Key": "ek_your_api_key_here" } } } }
| Tool | Description |
|---|---|
lookup_profile | Look up a professional profile by URL |
lookup_company | Look up a company by URL |
get_posts | Get recent posts from a profile or company |
get_reactions | Get reactions on a post |
get_comments | Get comments on a post |
get_employees | List employees at a company |
check_usage | Check your credits and rate limits |
Each tool call uses 1 credit, same as a regular API request. Rate limits and billing apply as normal.