Data API·people · companies · schools · signals

A clean B2B graph you can build on.

Three vendors disagree about the same account, and every slug you keyed on just changed. The Data API is one deduplicated graph of people, companies, schools, and job-change signals, addressed by permanent ids and returned in milliseconds. Keyed on ids, your joins never break.

Stable opaque idsRich filtersCursor pagination
200 · 121ms
await renidly.data.people.search({ title: "cto", geo: "US" })
{
  "count": 24918,
  "next_cursor": "eyJ…",
  "results": [
    {
      "entityId": "prsn_9f2a41",
      "headline": "CTO · fintech · SF"
    },
    {
      "entityId": "prsn_1b7c08",
      "headline": "CTO · SaaS · NYC"
    }
  ]
}
//What you can do

Query the graph, four ways in.

200 · 57ms
await renidly.data.people.retrieve({ id: "prsn_9f2a41" })
{
  "entityId": "prsn_9f2a41",
  "first_name": "Ada",
  "last_name": "Meyer",
  "headline": "VP Engineering at Vercel",
  "skills": [
    "python",
    "go"
  ]
}
01Retrieve

One record by a permanent id

Every person, company, and school carries a stable, opaque id that never changes. Fetch the full record by that id and your joins keep working when a handle or a slug moves underneath you. A handle or slug is accepted too, as a convenience.

  • Permanent prsn_, org_, and inst_ ids
  • The full record in milliseconds
  • A handle or slug works as a shortcut
200 · 110ms
await renidly.data.jobChanges.search({ event_type: "joined" })
{
  "results": [
    {
      "full_name": "R. Osei",
      "event": "joined",
      "from": "Retool",
      "to": "Vercel"
    },
    {
      "full_name": "L. Park",
      "event": "joined",
      "from": "Ramp",
      "to": "Linear"
    }
  ]
}
03Signals

Know the moment someone moves

The best time to reach out is right after a change. Search job-change events as people join, leave, or change title at the companies you track, and turn a move into outreach that lands while it still matters.

  • Joined, left, and title-change events
  • Filter by the companies you follow
  • The freshest reason to reach out
200 · 96ms
await renidly.data.companies.employees("vercel", { title: "engineer" })
{
  "count": 460,
  "results": [
    {
      "full_name": "Ada Meyer",
      "title": "VP Engineering"
    },
    {
      "full_name": "R. Osei",
      "title": "Staff Engineer"
    }
  ]
}
02Rosters

The people inside any company

Search organizations by firmographics, then open any of them to its workforce, filtered down to the roles you care about. Every company is one deduplicated record, not three sources disagreeing about headcount.

  • Filter employees by title and more
  • Search companies by size and industry
  • Every result keyed to a stable id
200 · 132ms
await renidly.data.institutions.alumni("stanford", { degree: "MBA" })
{
  "count": 1240,
  "results": [
    {
      "full_name": "Jane Doe",
      "title": "VP Product at Acme"
    },
    {
      "full_name": "Sam Lee",
      "title": "Founder at Beacon"
    }
  ]
}
04Education

Schools and the people from them

Resolve any institution and browse its alumni and students, filtered by degree and more. Build a network from a shared school, or enrich a profile with where someone studied and what they can do.

  • Institutions by search or id
  • Alumni filtered by degree
  • A searchable skills catalog too
//In depth

Everything the Data API holds, up close.

01People

Search, then retrieve

Query people by title, skills, location, company, school, and more, page through the matches with a cursor, and open any of them to a full profile by its stable id. The search and the record share one schema.

02Companies

Firmographics you can score on

Search organizations by size, industry, and more, retrieve any one in full, and list its employees. Every company is a single deduplicated record, so your scoring model is not inheriting three vendors’ disagreements.

03Signals

Track the moves

Job-change events surface who joined, left, or changed title at the companies you follow, ready to feed a watchlist and trigger outreach at the right moment instead of a cold one.

04Scale

Enrich a whole book at once

Hand off up to a thousand people or companies in one batch job and stream the enriched records back, each keyed to exactly the input you sent, so joining the results to your table is trivial.

05Identifiers

Ids that never churn

Records are keyed by permanent, opaque ids you cannot guess or parse. Store the id, not the handle, and your warehouse joins keep working when a public slug changes underneath everyone.

//In practice

Search, then page every result.

One typed client, the same key across all three APIs. No SDK? It is one authenticated HTTPS call and one JSON envelope.

python · pip install renidlyready
# search, then page every result lazily
q = renidly.data.people.search(
title="cto", geo_country_code="US", staff_count_min=100)
for p in q.auto_paging_iter():
print(p.entityId, p.headline)
24,918 results
$
// Filters
200+
Attributes to search and filter across the graph.
// Latency
<500ms
Typical response time on a query.
// Batch
1,000
Records enriched in a single background job.
//Why Renidly

A dataset you can build a product on.

Stable, opaque ids

Permanent identifiers, not handles or slugs that move. Build on the id and your joins survive every rename underneath them.

Deduplicated and consistent

One clean record per subject and one schema across the whole graph, not a raw vendor dump you have to reconcile yourself.

Pagination that disappears

The SDKs walk every page for you, one page in memory at a time, with no cursor bookkeeping and no off-by-one at the tail.

You pay only for success

Validation errors, empty results, and cache hits are free. Credits move on a successful response.

//What changes for you

Your warehouse is keyed on ids that never churn, so slugs change and people move while your joins keep working, and one clean record per subject replaces the three vendors you used to reconcile by hand.

Get started in minutes

Ship your first resolution today.

Get your API key on signup. Pay only for what you call.

Start
Free

100 credits on signup

Scale
From $50

Pay-as-you-go top-ups

Volume
Custom

Negotiated + SLA

  • No credit card
  • No subscription
  • Credits never expire
  • 24/7 support