---
title: "Enrich a contact"
method: GET
path: "/api/v1/enrichment/contact"
tags: ["Enrichment"]
---

# Enrich a contact

`GET /api/v1/enrichment/contact`

## Request

- Base URL: `https://api.rodz.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.rodz.io/api/v1/enrichment/contact`
- Auth: HTTP bearer

Find comprehensive professional profiles for any person — current company, work history, education, skills, and LinkedIn engagement — using a LinkedIn URL, email, or name+company combination.

**Input:** at least one of: LinkedIn profile URL (`url`), email address (`email`), first/last name (`firstName`, `lastName`) or full name (`fullName`), or company identifiers (`companyName`, `domain`, `companyLinkedinUrl`). LinkedIn URL lookups return the richest data; email or name-based lookups may return fewer fields.

**Data freshness:** `freshness=live` (default) fetches the profile at request time — the profile as it stands the moment you ask, 0.5 credits, typically 3-4 s. `freshness=cached` answers from a stored profile that is **never more than 8 days old**, at 0.25 credits (half price) and typically **under a second** (measured: ~0.8 s median against ~4 s for `live`). **If latency matters, integrate against `cached`** — in the normal case it returns exactly the same fields as `live`: same positions, same education entries, same company and school logos. A minority of cached answers are rebuilt from our own stored columns and omit `country`/`region`/`county`/`city`, `educationDetails` beyond `universitiesNamesList`, language proficiency, `certificationsList`, `isVerified`, `isCreator`, `isOpenLink`, `extractedGender`, `companyWebsite` and per-position `jobDescription`/`yearsInRole`; ask for `live` when you need a profile refreshed in the last minutes or must have every one of those on every call. Both rates are set against your monthly volume.

**Output:** enriched contact record (`data.person`) with professional headline, current and past positions (with employment dates), education details, skills, languages, location, profile photo, follower/connection counts, and hiring status.

## Query parameters

- `url` string, nullable: LinkedIn profile URL (e.g. https://www.linkedin.com/in/johndoe)
- `email` string, nullable: Contact email address
- `firstName` string, nullable: First name (requires lastName)
- `lastName` string, nullable: Last name (requires firstName)
- `fullName` string, nullable: Full name (alternative to firstName + lastName)
- `domain` string, nullable: Company domain (e.g. google.com)
- `companyName` string, nullable: Company name
- `companyLinkedinUrl` string, nullable: Company LinkedIn URL
- `freshness` 'live' | 'cached': Data freshness. `live` (default): a fresh lookup, most current data — **0.5 credits**. `cached`: answered from a profile we already hold when we have a recent one — **0.25 credits** and near-instant instead of ~3s, at the cost of data that may be slightly less recent and a reduced field set. Same values and pricing as the bulk endpoint.

## Response `200`

Enriched contact (`data.person`).

- object: Typed response for ``GET /enrichment/contact``.
  - `data` object, nullable: ``data`` wrapper for the person endpoints — holds a single ``person``.
    - `person` object, nullable: The enriched LinkedIn person object (``data.person``).
      - `firstName` string, nullable
      - `middleName` string, nullable
      - `lastName` string, nullable
      - `name` string, nullable
      - `linkedInUrl` string, nullable
      - `linkedInId` string, nullable
      - `linkedinSalesLink` string, nullable: Sales Navigator profile URN token (e.g. ACoAAB...)
      - `headline` string, nullable
      - `activeCompany` string, nullable
      - `numberOfCurrentCompanies` string, nullable
      - `location` string, nullable
      - `country` string, nullable
      - `region` string, nullable
      - `county` string, nullable
      - `city` string, nullable
      - `followers` string, nullable: Follower count as a string
      - `followerCount` integer, nullable
      - `connectionsCount` integer, nullable
      - `isCreator` boolean, nullable
      - `isJobSeeker` boolean, nullable
      - `isOpenLink` boolean, nullable
      - `isPremium` boolean, nullable
      - `isVerified` boolean, nullable
      - `openProfileMessages` boolean, nullable
      - `languages` string, nullable: Comma-separated language list
      - `skillsList` string, nullable: Comma-separated skills
      - `linkedinSummary` string, nullable
      - `companyWebsite` string, nullable
      - `extractedGender` string, nullable: Inferred gender when available: one of "male", "female", or "" (unknown)
      - `formerCompaniesList` string, nullable: Comma-separated former company names
      - `education` object, nullable
        - `universitiesNamesList` string, nullable
        - `educationDetails` object[], nullable
          - `startedOn` object, nullable: Start year. Education dates are year-granular; no month is available.
            - `year` string, nullable
          - `endedOn` object, nullable: End year. Year-granular, like startedOn.
            - `year` string, nullable
          - `universityName` string, nullable
          - `fieldsOfStudy` string[], nullable
          - `socialUrl` string, nullable: School LinkedIn URL, e.g. https://www.linkedin.com/company/15142508/
          - `schoolId` string, nullable: LinkedIn school ID as a string, e.g. "15142508"
          - `schoolLogo` string, nullable: School logo image URL (empty when the school has none)
      - `certificationsList` string, nullable
      - `certification` object[], nullable: Certification entries (empty when none)
        - `title` string, nullable: Certification name, e.g. "Machine Learning"
        - `issuedAt` string, nullable: Free text as displayed, e.g. "Issued Jan 2017" — not a date
        - `link` string, nullable: URL of the certification itself
        - `issuedBy` string, nullable: Issuing organisation name
        - `issuedByLink` string, nullable: LinkedIn URL of the issuing organisation
        - `issuedByLogo` object, nullable
          - `url` string, nullable
          - `sizes` object[], nullable
            - `url` string, nullable
            - `width` integer, nullable
            - `height` integer, nullable
      - `currentCompanyDetail` object[], nullable
        - `companyName` string, nullable
        - `jobTitle` string, nullable
        - `startTime` string, nullable
        - `endTime` string, nullable: End date, or "Present" for current roles
        - `yearsInCompany` string, nullable
        - `yearsInRole` string, nullable
        - `jobDescription` string, nullable
        - `companyUrl` string, nullable: Company LinkedIn URL for this position
        - `companyWebsite` string, nullable
        - `companyId` string, nullable: LinkedIn company ID as a string, e.g. "101088054"
        - `companyLogo` string, nullable: Company logo image URL (empty when unavailable)
        - `location` string, nullable: Where this role is based, e.g. "Bordeaux, Nouvelle-Aquitaine, France"
        - `employmentType` string, nullable: Contract type as shown on the profile, e.g. "Permanent", "Internship"
        - `workplaceType` string, nullable: Work arrangement, e.g. "Hybrid", "Remote", "On-site"
      - `pastCompaniesDetails` object[], nullable
        - `companyName` string, nullable
        - `jobTitle` string, nullable
        - `startTime` string, nullable
        - `endTime` string, nullable: End date, or "Present" for current roles
        - `yearsInCompany` string, nullable
        - `yearsInRole` string, nullable
        - `jobDescription` string, nullable
        - `companyUrl` string, nullable: Company LinkedIn URL for this position
        - `companyWebsite` string, nullable
        - `companyId` string, nullable: LinkedIn company ID as a string, e.g. "101088054"
        - `companyLogo` string, nullable: Company logo image URL (empty when unavailable)
        - `location` string, nullable: Where this role is based, e.g. "Bordeaux, Nouvelle-Aquitaine, France"
        - `employmentType` string, nullable: Contract type as shown on the profile, e.g. "Permanent", "Internship"
        - `workplaceType` string, nullable: Work arrangement, e.g. "Hybrid", "Remote", "On-site"
      - `photoUrl` string, nullable
      - `websites` string, nullable: Comma-separated personal website URLs
      - `hiring` boolean, nullable
      - `registeredAt` string, nullable: LinkedIn registration date (YYYY-MM-DD)
      - `locale` string, nullable: Profile locale, e.g. "en", "fr"
  - `requestId` string, nullable: Unique request identifier

## Other responses

- `400`: No search parameter supplied — provide at least one.
- `422`: Validation Error
- `429`: Rate limit exceeded. Retry after the number of seconds in the `Retry-After` response header.

---

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