# People Data Labs

> Look up people and companies in a dataset of billions of profiles. Turn an email, LinkedIn URL or website into a full profile, search for prospects by title, seniority, company size and location, see which company is behind an IP address, and tidy messy company, school and place names.

App · Contact Management · 12 actions. Web page: https://docs.lodol.com/docs/integrations/people-data-labs

## Actions

### Find a company

Get a company's profile (industry, size, headcount, founding year, headquarters, funding and social pages) from its website, LinkedIn page, name or stock ticker. Finding nothing is not an error: 'found' comes back false. Uses one credit when the company is found.

**Inputs**

- Website (`website`, text): The company's website. The most exact way to find it.
- LinkedIn page (`profile_url`, text): The company's LinkedIn page.
- Name (`name`, text): The company's name.
- Stock ticker (`ticker`, text): Its ticker, if public.
- PDL ID (`pdl_id`, text): People Data Labs' id for the company, from an earlier search.
- Headquarters (`location`, text): Where it is based, to tell apart companies with the same name.
- Minimum match confidence (`min_likelihood`, number): How sure People Data Labs must be that it found the right match, from 1 to 10. Leave empty for its default of 2; 6 or more returns only strong matches. From 1 to 10.

**Outputs**

- `company` (object): The company's profile.
- `fields_not_in_plan` (list): Fields People Data Labs has that the account's plan does not include. They come back empty; upgrading the plan fills them in.
- `found` (true/false): Whether the company was found.
- `likelihood` (number): How sure the match is, from 1 to 10.

**Example output**

```json
{
  "company": {
    "employee_count": 135,
    "founded": 2015,
    "id": "tnHcNHbCv8MKeLh92946LAkX6PKg",
    "industry": "Computer Software",
    "linkedin_url": "linkedin.com/company/peopledatalabs",
    "location": {
      "country": "United States",
      "locality": "San Francisco",
      "name": "San Francisco, California, United States",
      "region": "California"
    },
    "name": "People Data Labs",
    "size": "51-200",
    "tags": [
      "data",
      "b2b data"
    ],
    "type": "private",
    "website": "peopledatalabs.com"
  },
  "fields_not_in_plan": [],
  "found": true,
  "likelihood": 10
}
```

### Find a person

Get one person's full profile (current job, employer, location, work history, education and social profiles) from their email, a profile URL, a phone number, or their name with a company, school or location. Finding nobody is not an error: 'found' comes back false. Uses one credit when someone is found.

**Inputs**

- Email (`email`, text): An email address the person uses, work or personal.
- Profile URL (`profile_url`, text): Their LinkedIn profile, or another social profile such as GitHub or X.
- Phone number (`phone`, text): A phone number they use, starting with + and the country code.
- Full name (`name`, text): Their first and last name. On its own a name is not enough; add a company, school or location.
- Company (`company`, text): A company they work or worked at: its name or website.
- Location (`location`, text): Where they live: a city, region or country.
- School (`school`, text): A school or university they attended.
- PDL ID (`pdl_id`, text): People Data Labs' id for the person, from an earlier search.
- Minimum match confidence (`min_likelihood`, number): How sure People Data Labs must be that it found the right match, from 1 to 10. Leave empty for its default of 2; 6 or more returns only strong matches. From 1 to 10.
- Only if they have (`required_fields`, list): Only count a match that has these. A profile without them comes back as not found and uses no credit. One or more of: `work_email` (A work email), `personal_emails` (A personal email), `phone_numbers` (A phone number), `linkedin_url` (A LinkedIn profile).

**Outputs**

- `fields_not_in_plan` (list): Fields People Data Labs has that the account's plan does not include. They come back empty; upgrading the plan fills them in.
- `found` (true/false): Whether a matching person was found.
- `likelihood` (number): How sure the match is, from 1 to 10.
- `person` (object): The person's profile.

**Example output**

```json
{
  "fields_not_in_plan": [
    "work_email"
  ],
  "found": true,
  "likelihood": 9,
  "person": {
    "first_name": "Sean",
    "full_name": "Sean Thorne",
    "id": "qEnOZ5Oh0poWnQ1luFBfVw_0000",
    "job_company_industry": "computer software",
    "job_company_name": "People Data Labs",
    "job_company_size": "51-200",
    "job_company_website": "peopledatalabs.com",
    "job_title": "Co-Founder and Chief Executive Officer",
    "job_title_levels": [
      "cxo",
      "owner"
    ],
    "job_title_role": "operations",
    "last_name": "Thorne",
    "linkedin_url": "linkedin.com/in/seanthorne",
    "location_country": "United States",
    "location_name": "San Francisco, California, United States",
    "skills": [
      "Data Science",
      "Entrepreneurship"
    ],
    "work_email": null
  }
}
```

### Find companies in bulk

Look up to 100 companies in one step. Give each as a website, a LinkedIn page or a name, or pass the rows of an earlier step. Results come back in the same order, each marked found or not. Uses one credit per company found.

**Inputs**

- Companies (`companies`, list, required): Up to 100 companies: one website, LinkedIn page or name per entry, or records from an earlier step.

**Outputs**

- `count` (number): How many were looked up.
- `fields_not_in_plan` (list): Fields People Data Labs has that the account's plan does not include. They come back empty; upgrading the plan fills them in.
- `found_count` (number): How many were found.
- `not_found_count` (number): How many were not.
- `results` (list): One result per entry, in the order given.

**Example output**

```json
{
  "count": 1,
  "fields_not_in_plan": [],
  "found_count": 1,
  "not_found_count": 0,
  "results": [
    {
      "company": {
        "employee_count": 135,
        "founded": 2015,
        "id": "tnHcNHbCv8MKeLh92946LAkX6PKg",
        "industry": "Computer Software",
        "linkedin_url": "linkedin.com/company/peopledatalabs",
        "location": {
          "country": "United States",
          "locality": "San Francisco",
          "name": "San Francisco, California, United States",
          "region": "California"
        },
        "name": "People Data Labs",
        "size": "51-200",
        "tags": [
          "data",
          "b2b data"
        ],
        "type": "private",
        "website": "peopledatalabs.com"
      },
      "found": true,
      "input": "peopledatalabs.com",
      "likelihood": 10
    }
  ]
}
```

### Find people in bulk

Look up to 100 people in one step. Give each as an email, a profile URL or a phone number, or pass the rows of an earlier step (with columns such as email, name and company). Results come back in the same order, each marked found or not. Uses one credit per person found.

**Inputs**

- People (`people`, list, required): Up to 100 people: one email, profile URL or phone number per entry, or records from an earlier step.
- Minimum match confidence (`min_likelihood`, number): How sure People Data Labs must be that it found the right match, from 1 to 10. Leave empty for its default of 2; 6 or more returns only strong matches. From 1 to 10.
- Only if they have (`required_fields`, list): Only count a match that has these. A profile without them comes back as not found and uses no credit. One or more of: `work_email` (A work email), `personal_emails` (A personal email), `phone_numbers` (A phone number), `linkedin_url` (A LinkedIn profile).

**Outputs**

- `count` (number): How many were looked up.
- `fields_not_in_plan` (list): Fields People Data Labs has that the account's plan does not include. They come back empty; upgrading the plan fills them in.
- `found_count` (number): How many were found.
- `not_found_count` (number): How many were not.
- `results` (list): One result per entry, in the order given.

**Example output**

```json
{
  "count": 1,
  "fields_not_in_plan": [
    "work_email"
  ],
  "found_count": 1,
  "not_found_count": 0,
  "results": [
    {
      "found": true,
      "input": "linkedin.com/in/seanthorne",
      "likelihood": 10,
      "person": {
        "first_name": "Sean",
        "full_name": "Sean Thorne",
        "id": "qEnOZ5Oh0poWnQ1luFBfVw_0000",
        "job_company_industry": "computer software",
        "job_company_name": "People Data Labs",
        "job_company_size": "51-200",
        "job_company_website": "peopledatalabs.com",
        "job_title": "Co-Founder and Chief Executive Officer",
        "job_title_levels": [
          "cxo",
          "owner"
        ],
        "job_title_role": "operations",
        "last_name": "Thorne",
        "linkedin_url": "linkedin.com/in/seanthorne",
        "location_country": "United States",
        "location_name": "San Francisco, California, United States",
        "skills": [
          "Data Science",
          "Entrepreneurship"
        ],
        "work_email": null
      }
    }
  ]
}
```

### Find possible matches for a person

When you know too little to be sure who someone is (just a name and a city, say), get up to 20 likely profiles, best match first, each with a match score. Uses one credit per step, even when nobody matches.

**Inputs**

- Full name (`name`, text): Their first and last name. On its own a name is not enough; add a company, school or location.
- Company (`company`, text): A company they work or worked at: its name or website.
- Location (`location`, text): Where they live: a city, region or country.
- School (`school`, text): A school or university they attended.
- Email (`email`, text): An email address the person uses, work or personal.
- Profile URL (`profile_url`, text): Their LinkedIn profile, or another social profile such as GitHub or X.
- Phone number (`phone`, text): A phone number they use, starting with + and the country code.

**Outputs**

- `count` (number): How many possible matches came back.
- `fields_not_in_plan` (list): Fields People Data Labs has that the account's plan does not include. They come back empty; upgrading the plan fills them in.
- `found` (true/false): Whether anyone matched.
- `matches` (list): Possible matches, best first.

**Example output**

```json
{
  "count": 1,
  "fields_not_in_plan": [
    "work_email"
  ],
  "found": true,
  "matches": [
    {
      "match_score": 94,
      "matched_on": [
        "company",
        "name"
      ],
      "person": {
        "first_name": "Sean",
        "full_name": "Sean Thorne",
        "id": "qEnOZ5Oh0poWnQ1luFBfVw_0000",
        "job_company_industry": "computer software",
        "job_company_name": "People Data Labs",
        "job_company_size": "51-200",
        "job_company_website": "peopledatalabs.com",
        "job_title": "Co-Founder and Chief Executive Officer",
        "job_title_levels": [
          "cxo",
          "owner"
        ],
        "job_title_role": "operations",
        "last_name": "Thorne",
        "linkedin_url": "linkedin.com/in/seanthorne",
        "location_country": "United States",
        "location_name": "San Francisco, California, United States",
        "skills": [
          "Data Science",
          "Entrepreneurship"
        ],
        "work_email": null
      }
    }
  ]
}
```

### Look up an IP address

Find the company behind an IP address, such as a website visitor's, and where the address is. Also says whether it is a VPN, proxy or mobile network. 'found' is true when a company matched; the location comes back either way. Uses one credit when a company matches.

**Inputs**

- IP address (`ip`, text, required): An IPv4 or IPv6 address.
- Minimum confidence (`min_confidence`, text): Only return a company PDL is at least this sure about. Leave empty to accept any match. One of: `very high`, `high` (High or better), `moderate` (Moderate or better), `low` (Low or better), `very low` (Any).

**Outputs**

- `company` (object)
- `found` (true/false): Whether a company matched the address.
- `ip` (object)
- `person` (object)

**Example output**

```json
{
  "company": {
    "confidence": "high",
    "name": "Cox Communications",
    "size": "10001+",
    "website": "cox.com"
  },
  "found": true,
  "ip": {
    "address": "72.212.42.169",
    "location": {
      "country": "United States",
      "name": "Phoenix, Arizona, United States",
      "timezone": "America/Phoenix"
    },
    "metadata": {
      "mobile": false,
      "version": 4,
      "vpn": false
    }
  },
  "person": null
}
```

### Search for companies

Find companies that match a description, such as private software companies of 51-200 people in Germany founded since 2015. Every filter you set must match. Each company returned uses one credit, so set 'Most results' to what you need.

**Inputs**

- Industry (`industry`, text): Only companies in this industry. One of: `accounting`, `airlines/aviation`, `alternative dispute resolution`, `alternative medicine`, `animation`, `apparel & fashion`, `architecture & planning`, `arts and crafts`, `automotive`, `aviation & aerospace`, and 137 more.
- Company size (`company_sizes`, list): How many people work there. Leave empty for any size. One or more of: `1-10`, `11-50`, `51-200`, `201-500`, `501-1000` (501-1,000), `1001-5000` (1,001-5,000), `5001-10000` (5,001-10,000), `10001+` (10,001+).
- Company type (`company_types`, list): Leave empty for any type. One or more of: `private`, `public`, `public_subsidiary` (Subsidiary of a public company), `nonprofit`, `educational`, `government`.
- Country (`country`, text): The country its headquarters is in. One of: `afghanistan`, `åland islands`, `albania`, `algeria`, `american samoa`, `andorra`, `angola`, `anguilla`, `antigua and barbuda`, `argentina`, and 239 more.
- State or region (`region`, text): Where its headquarters is, written out in full, e.g. 'California'.
- City (`city`, text): The city its headquarters is in.
- Founded in or after (`founded_after`, number): The earliest founding year, e.g. 2015. From 1600 to 2100.
- Founded in or before (`founded_before`, number): The latest founding year. From 1600 to 2100.
- Keywords (`keywords`, list): Topics the company is known for, e.g. 'saas' or 'fintech'. Any company tagged with at least one of them matches.
- SQL filter (advanced) (`sql`, text): For anything the filters above cannot express: a condition on People Data Labs' company fields, like employee_count > 500 AND founded >= 2010. It replaces the filters above, so leave them empty when you use it.
- Most results (`max_results`, number): How many to return, up to 100. Each one uses a credit. From 1 to 100. Default: `10`.
- Next page token (`page_token`, text): To get the next page of the same search, pass the 'next_page_token' the previous search returned. Leave empty for the first page.

**Outputs**

- `companies` (list): The companies found.
- `count` (number): How many came back.
- `fields_not_in_plan` (list): Fields People Data Labs has that the account's plan does not include. They come back empty; upgrading the plan fills them in.
- `next_page_token` (text): Pass to 'Next page token' to get the next page. Empty on the last page.
- `total` (number): How many match in all, across every page.

**Example output**

```json
{
  "companies": [
    {
      "employee_count": 135,
      "founded": 2015,
      "id": "tnHcNHbCv8MKeLh92946LAkX6PKg",
      "industry": "Computer Software",
      "linkedin_url": "linkedin.com/company/peopledatalabs",
      "location": {
        "country": "United States",
        "locality": "San Francisco",
        "name": "San Francisco, California, United States",
        "region": "California"
      },
      "name": "People Data Labs",
      "size": "51-200",
      "tags": [
        "data",
        "b2b data"
      ],
      "type": "private",
      "website": "peopledatalabs.com"
    }
  ],
  "count": 1,
  "fields_not_in_plan": [],
  "next_page_token": "104$14.278746",
  "total": 318
}
```

### Search for people

Find people who match a description, such as sales directors at 51-200 person software companies in Canada. Combine any filters; every filter you set must match. Each person returned uses one credit, so set 'Most results' to what you need.

**Inputs**

- Job titles (`job_titles`, list): Titles to look for. Each matches any title containing its words, so 'software engineer' also finds 'senior software engineer'. Up to 20.
- Job functions (`job_functions`, list): The kind of work they do, whatever their exact title. One or more of: `advisory`, `analyst`, `creative`, `support` (Customer support), `education`, `engineering`, `finance`, `fulfillment`, `health` (Healthcare), `hospitality`, and 13 more.
- Seniority (`seniority`, list): How senior they are in their current job. One or more of: `cxo` (C-suite), `owner`, `partner`, `vp` (Vice president), `director`, `manager`, `senior`, `entry` (Entry level), `training` (In training), `unpaid`.
- Companies (`companies`, list): Where they work now: company names or websites, e.g. 'stripe.com'. A website is the more exact match.
- Company size (`company_sizes`, list): How many people work at their current employer. Leave empty for any size. One or more of: `1-10`, `11-50`, `51-200`, `201-500`, `501-1000` (501-1,000), `1001-5000` (1,001-5,000), `5001-10000` (5,001-10,000), `10001+` (10,001+).
- Industry (`industry`, text): The industry their current employer is in. One of: `accounting`, `airlines/aviation`, `alternative dispute resolution`, `alternative medicine`, `animation`, `apparel & fashion`, `architecture & planning`, `arts and crafts`, `automotive`, `aviation & aerospace`, and 137 more.
- Country (`country`, text): The country they live in. One of: `afghanistan`, `åland islands`, `albania`, `algeria`, `american samoa`, `andorra`, `angola`, `anguilla`, `antigua and barbuda`, `argentina`, and 239 more.
- State or region (`region`, text): The state or region they live in, written out in full, e.g. 'California'.
- City (`city`, text): The city they live in, e.g. 'Austin'.
- Skills (`skills`, list): Skills they list, e.g. 'python' or 'salesforce'. Anyone with at least one of them matches.
- Started current job on or after (`started_current_job_after`, date): Only people who started their current job on or after this date. Good for finding new hires and job changers.
- Only people with (`must_have`, list): Leave out anyone without these. One or more of: `work_email` (A work email), `personal_emails` (A personal email), `phone_numbers` (A phone number), `linkedin_url` (A LinkedIn profile).
- SQL filter (advanced) (`sql`, text): For anything the filters above cannot express: a condition on People Data Labs' person fields, like job_title_role='sales' AND location_country='canada'. It replaces the filters above, so leave them empty when you use it.
- Most results (`max_results`, number): How many to return, up to 100. Each one uses a credit. From 1 to 100. Default: `10`.
- Next page token (`page_token`, text): To get the next page of the same search, pass the 'next_page_token' the previous search returned. Leave empty for the first page.

**Outputs**

- `count` (number): How many came back.
- `fields_not_in_plan` (list): Fields People Data Labs has that the account's plan does not include. They come back empty; upgrading the plan fills them in.
- `next_page_token` (text): Pass to 'Next page token' to get the next page. Empty on the last page.
- `people` (list): The people found.
- `total` (number): How many match in all, across every page.

**Example output**

```json
{
  "count": 1,
  "fields_not_in_plan": [
    "work_email"
  ],
  "next_page_token": "104$14.278746",
  "people": [
    {
      "first_name": "Sean",
      "full_name": "Sean Thorne",
      "id": "qEnOZ5Oh0poWnQ1luFBfVw_0000",
      "job_company_industry": "computer software",
      "job_company_name": "People Data Labs",
      "job_company_size": "51-200",
      "job_company_website": "peopledatalabs.com",
      "job_title": "Co-Founder and Chief Executive Officer",
      "job_title_levels": [
        "cxo",
        "owner"
      ],
      "job_title_role": "operations",
      "last_name": "Thorne",
      "linkedin_url": "linkedin.com/in/seanthorne",
      "location_country": "United States",
      "location_name": "San Francisco, California, United States",
      "skills": [
        "Data Science",
        "Entrepreneurship"
      ],
      "work_email": null
    }
  ],
  "total": 842
}
```

### Standardize a company name

Turn a company name, website or LinkedIn page as someone typed it into People Data Labs' standard record: its proper name, website, industry, size and headquarters. Free: uses no credits.

**Inputs**

- Name (`name`, text): The name as written.
- Website (`website`, text): The company's website.
- LinkedIn page (`profile_url`, text): The company's LinkedIn page.

**Outputs**

- `found` (true/false): Whether PDL recognised the company.
- `founded` (number): The year it was founded.
- `fuzzy_match` (true/false): Whether the match was approximate rather than exact.
- `id` (text): PDL's id for the company.
- `industry` (text): Its industry.
- `linkedin_url` (text): Its LinkedIn page.
- `location` (object): Headquarters.
- `name` (text): Its standard name (lowercase, as PDL stores it).
- `size` (text): Its size band.
- `ticker` (text): Its stock ticker, if public.
- `type` (text): private, public, nonprofit, ...
- `website` (text): Its website.

**Example output**

```json
{
  "found": true,
  "founded": 2015,
  "fuzzy_match": false,
  "id": "tnHcNHbCv8MKeLh92946LAkX6PKg",
  "industry": "computer software",
  "linkedin_url": "linkedin.com/company/peopledatalabs",
  "location": {
    "name": "san francisco, california, united states"
  },
  "name": "people data labs",
  "size": "51-200",
  "ticker": null,
  "type": "private",
  "website": "peopledatalabs.com"
}
```

### Standardize a location

Turn a place as someone typed it (an address, a city, a region) into People Data Labs' standard spelling, split into city, region and country, ready for a search filter. Free: uses no credits.

**Inputs**

- Location (`location`, text, required): The place as written.

**Outputs**

- `continent` (text): The continent.
- `country` (text): The country.
- `found` (true/false): Whether PDL recognised the place.
- `geo` (text): Latitude and longitude, as 'lat,long'.
- `locality` (text): The city.
- `name` (text): The full place, e.g. 'portland, oregon, united states'.
- `region` (text): The state or region.
- `subregion` (text): The county or district.
- `type` (text): What kind of place: locality, region, country, ...

**Example output**

```json
{
  "continent": "north america",
  "country": "united states",
  "found": true,
  "geo": "37.77,-122.41",
  "locality": "san francisco",
  "name": "san francisco, california, united states",
  "region": "california",
  "subregion": "san francisco county",
  "type": "locality"
}
```

### Standardize a school name

Turn a school or university's name, website or LinkedIn page as someone typed it into People Data Labs' standard record. Free: uses no credits.

**Inputs**

- Name (`name`, text): The name as written.
- Website (`website`, text): Its website.
- LinkedIn page (`profile_url`, text): Its LinkedIn page.

**Outputs**

- `domain` (text): Its web domain.
- `found` (true/false): Whether PDL recognised the school.
- `id` (text): PDL's id for the school.
- `linkedin_url` (text): Its LinkedIn page.
- `location` (object): Where it is.
- `name` (text): Its standard name (lowercase, as PDL stores it).
- `type` (text): What kind of school.
- `website` (text): Its website.

**Example output**

```json
{
  "domain": "uoregon.edu",
  "found": true,
  "id": "64LkgD6RpD9Ab5sB7rRqvg_0",
  "linkedin_url": "linkedin.com/school/university-of-oregon",
  "location": {
    "name": "eugene, oregon, united states"
  },
  "name": "university of oregon",
  "type": "post-secondary institution",
  "website": "uoregon.edu"
}
```

### Suggest search values

See how People Data Labs spells a job title, company, skill, school or place, with how many profiles have each, so a search filter matches. Free: uses no credits.

**Inputs**

- Suggest (`field`, text, required): What to suggest values for. One of: `title` (Job titles), `company` (Companies), `website` (Company websites), `industry` (Industries), `skill` (Skills), `school` (Schools), `major` (Fields of study), `role` (Job functions), `sub_role` (Job specialties), `class` (Job categories), and 4 more.
- Starting with (`text`, text): The start of the value. Leave empty for the most common ones.
- Most suggestions (`max_results`, number): Up to 100. From 1 to 100. Default: `10`.

**Outputs**

- `count` (number): How many suggestions came back.
- `suggestions` (list): Suggestions, most common first.

**Example output**

```json
{
  "count": 2,
  "suggestions": [
    {
      "count": 412345,
      "name": "data engineer"
    },
    {
      "count": 20321,
      "name": "data engineering manager"
    }
  ]
}
```
