---
title: "Reverse LinkedIn Lookup"
method: POST
path: "/reverse_linkedin_lookup"
tags: ["Reverse Lookups"]
---

# Reverse LinkedIn Lookup

`POST /reverse_linkedin_lookup`

## Request

- Base URL: `https://api.moltsets.com/api/v1/tools`
- URL: `https://api.moltsets.com/api/v1/tools/reverse_linkedin_lookup`
- Auth: HTTP bearer

The Reverse LinkedIn Lookup API resolves a LinkedIn profile URL into a complete business profile, including full name, job title, seniority, LinkedIn summary, skills, location, a valid business email, hashed business emails, and a personal email, plus company firmographics such as industry, NAICS and SIC codes, headcount, and revenue. Pass `include_experience: true` to add the person's full job history.

This is MoltSets' most complete LinkedIn enrichment endpoint. Use it when you need the full picture of a contact and their employer in a single call.

**Use this endpoint to:**
- Turn a LinkedIn URL into a fully enriched contact record
- Get company firmographics alongside personal contact details
- Power CRM enrichment workflows from a single input

**Fair Use Policy:**
This API is subject to our <a href="https://moltsets.com/fair-use-policy-enrichment/" target="_blank" rel="noopener">Fair Use Policy for Enrichment</a>.

**Response fields:**
- `summary` is the person's LinkedIn "about" text. `position_summary` describes their current role.
- `skills` and `interests` are arrays of strings. `connection_count` is the person's LinkedIn connection count, capped at `500`. Like LinkedIn's own "500+", a value of `500` means 500 or more.
- `business_email_md5s` holds the MD5 of every business email MoltSets holds for the person. `business_email_sha256s` holds the SHA256 of the same emails. Both can be present even when `business_email` is empty. `business_email` stays the single best validated pick.
- `company` adds `description`, `linkedin_industry` (LinkedIn's own industry label, next to `industry`), `naics_codes` and `sic_codes` (arrays of `{code, title}`), and `revenue` (an exact figure, next to `revenue_range`).
- `experience` is returned only when you pass `include_experience: true`. It is an array of roles, each with `title`, `company`, `company_linkedin_url`, `start_date`, `end_date`, `is_current`, `seniority`, `function`, and `description`. More than one role can be current. A current role has no `end_date`. Any field without data is left out of a role.
- In a found profile, a field with no data can be left out of `results` (or `company`) rather than returned as `null` or `[]`. This applies to fields such as `skills`, `interests`, `current_role_start_date`, `sic_codes`, and `revenue`. Check for a field before reading it.

**Personal email availability:**
Personal email fields (`personal_email`, `personal_emails`, and their `_validated_at` and `_risk_score` companions) are returned only when your plan includes personal email. Call `get_account` and read `personal_email_available`. On other plans these fields are withheld and `metadata.personal_email_restricted` is `true`.

**Hashed email availability:**
`business_email_md5s` is returned on all plans. `business_email_sha256s` is not available on the \$397 / month and \$997 / month plans. On those plans the field is stripped from `results` and `metadata.identity_hashes_restricted` is `true`. Read a missing `business_email_sha256s` as a plan boundary, not as absent data.

**Outcomes:**
A lookup that finds nothing is not an error. It returns HTTP `200` with `status: "not_found"`, empty or null `results`, and the usual `metadata` — and costs no tokens, though it still counts as one request against your Fair Use requests limit. Read `status`, not the HTTP code, to tell a hit from a miss. The API's only `404` is an unknown or retired tool name.

## Headers

- `User-Agent` string, required

## Request body

- object
  - `linkedin_url` string, required
  - `include_experience` boolean: Set to `true` to add `experience`, the person's full job history. Off by default because job history is the bulk of a profile. The current role is always returned in `title`, `seniority`, `functional_area`, and `current_role_start_date`.

## Response `200`

Success

## Other responses

- `401`: Unauthorized
- `402`: Payment Required — insufficient tokens
- `403`: Forbidden — missing `User-Agent` header, tool not on the plan, or account inactive
- `422`: Invalid Input — malformed body, or a parameter is missing, malformed, or outside its allowed values
- `429`: Too Many Requests — rate limit or Fair Use window exhausted
- `500`: Internal Server Error — the call could not complete. Usually the endpoint is temporarily unavailable, but an oversized request can also cause it. Retry with a smaller request first; the MoltSets team is alerted automatically.

---

[API](https://skmtc.dev/moltsets/apis/moltsets-api.md) - [All operations](https://skmtc.dev/moltsets/apis/moltsets-api/llms.txt) - [OpenAPI document](https://skmtc.dev/moltsets/apis/moltsets-api/revisions/b116df68bd90?raw)
