feature · read at request time

The LinkedIn
data layer.
750M profiles, one schema.

Two entities — People and Companies — resolved into a stable, typed shape, with the fields cached datasets leave null. Read at request time. Query it directly, or stream it into your warehouse.

Edges is not related to LinkedIn and is not an official LinkedIn product.

Jane Doe

VP of Product · Acme Cloud · linkedin.com/in/jane-doe

Profile · 38 fields
Identity6 / 6
name
"Jane Doe"
headline
"VP Product · Acme"
location
San Francisco, US
connections
2,847int
Current roleembedded
title
"VP of Product"
company.name
"Acme Cloud"
company.size
"500–1k"
tenure_months
28int
Embedded arrays3
experience[ ]
7 recordsRole[]
education[ ]
2 recordsEdu[]
skills[ ]
38 tagsstring[]
activity[ ]
last 30 daysPost[]
resolved in 1.78s · 1 credit schema v3 · stable

Profiles

750M

Companies

54M

// Entities

Two entities. Everything else derives from them.

People and Companies are the only records you model. Every one carries the same envelope, the same identifiers, the same nullability rules. Joins are first-class — a Company is an object on a Profile, not a key to chase.

People

750M

Identity, role, history and activity for every public LinkedIn profile.

full_name, headline
string
location
string
job_title
string
experiences[ ]
Experience[]
education[ ]
Education[]
contact
Contact
activity[ ]
Post[]

Companies

54M

Every company on LinkedIn — domain, exact employee count, funding, specialties.

company_name, domain
string
size_range
enum
industries[ ]
string[]
headquarters
string
number_employees
int
last_funding_raised
int
affiliates[ ]
Affiliate[]

Signals (built with Actions)

Schedule People/Companies extracts, diff live reads in your app, deliver via callbacks — no packaged events feed.

job_title / experiences[ ]
string / Experience[]
number_employees
int
last_funding_*
string / int
run_uid / custom_data
uuid / object
callback results[ ]
ActionResult[]
GET /runs/{uid}/outputs
poll

// Schema

The contract is the documentation.

Browse every entity and field, with types, nullability, and example values. Versioned with semver — breaking changes only on major bumps.

People

Profile

Role

Education

Activity

Companies

Signals

Engagement

Messaging

Profiletype Profile

A resolved LinkedIn member. Returned by linkedin-extract-people, linkedin-search-people and any signal whose subject is a person.

FieldTypeReq.Description
namestringyesDisplay name as written by the member.
headlinestring | nullnoThe bio line below the name.
locationstringyesDisplay location, with profile_country alongside.
job_titlestringyesCurrent role, parsed out with company_name and linkedin_company_id.
experiencesExperience[ ]yesChronological, newest first. Empty array if hidden.
sales_navigator_profile_idstring | nullnoThe SN identifier. Null only where the profile is unreachable.
number_connectionsintyesNetwork size, alongside number_followers and connection_degree.

// Coverage

Global coverage, refreshed continuously.

Resolution and freshness rates we report — not what we hope. Updated hourly on status-actions.edges.run.

Freshness, by source

How often each surface gets a fresh crawl. Hot rows update sooner.

Profile basics
re-resolved on read
Current role
hourly
Experience history
daily
Company headcount
weekly
Job-change signals
streaming · < 5 min
Intent signals
streaming · < 60 min
Funding events
streaming · < 30 min

The data, ready to query.

The same API key unlocks every entity, every endpoint. Start with a live enrich, stream a signals feed, or sync the schema into your warehouse.