<p align="center">
<img src="https://www.peopledatalabs.com/images/company-logo.png" style="background-color: white; padding: 5px 10px;" width="250" alt="People Data Labs Logo">
</p>
<h1 align="center">People Data Labs Python Client</h1>
<p align="center">Official Python client for the People Data Labs API.</p>
<p align="center">
<a href="https://github.com/peopledatalabs/peopledatalabs-python">
<img src="https://img.shields.io/badge/repo%20status-Active-limegreen" alt="Repo Status">
</a>
<a href="https://pypi.org/project/peopledatalabs/">
<img src="https://img.shields.io/pypi/v/peopledatalabs.svg?logo=pypi&logoColor=fff&label=PyPI+package&color=limegreen" alt="People Data Labs on PyPI" />
</a>
<a href="https://pypi.org/project/peopledatalabs/">
<img src="https://img.shields.io/pypi/pyversions/peopledatalabs.svg" alt="People Data Labs on PyPI" />
</a>
<a href="https://github.com/peopledatalabs/peopledatalabs-python/actions/workflows/python-poetry.yml">
<img src="https://github.com/peopledatalabs/peopledatalabs-python/actions/workflows/python-poetry.yml/badge.svg" alt="Tests Status" />
</a>
</p>
## Table of Contents
- [🔧 Installation](#installation)
- [🚀 Usage](#usage)
- [🏝 Sandbox Usage](#sandbox)
- [🌐 Endpoints](#endpoints)
- [📘 Documentation](#documentation)
- [Upgrading to v2.X.X](#upgrading-to-v2)
- [Upgrading to v3.X.X](#upgrading-to-v3)
- [Upgrading to v4.X.X](#upgrading-to-v4)
## 🔧 Installation <a name="installation"></a>
1. Install from PyPi using [pip](https://pip.pypa.io/en/latest/), a package manager for Python.
```bash
pip install peopledatalabs
```
2. Sign up for a [free PDL API key](https://www.peopledatalabs.com/signup).
## 🚀 Usage <a name="usage"></a>
First, create the PDLPY client:
```python
from peopledatalabs import PDLPY
# specify your API key
client = PDLPY(
api_key="YOUR API KEY",
)
```
Then, send requests to any PDL API Endpoint.
### Getting Person Data
#### By Enrichment
```python
result = client.person.enrichment(
phone="4155688415",
pretty=True,
)
if result.ok:
print(result.text)
else:
print(
f"Status: {result.status_code};"
f"\nReason: {result.reason};"
f"\nMessage: {result.json()['error']['message']};"
)
```
#### By Bulk Enrichment
```python
result = client.person.bulk(
required="emails AND profiles",
requests=[
{
"metadata": {
"user_id": "123"
},
"params": {
"profile": ["linkedin.com/in/seanthorne"],
"location": ["SF Bay Area"],
"name": ["Sean F. Thorne"],
}
},
{
"metadata": {
"user_id": "345"
},
"params": {
"profile": ["https://www.linkedin.com/in/haydenconrad/"],
"first_name": "Hayden",
"last_name": "Conrad",
}
}
]
)
if result.ok:
print(result.text)
else:
print(
f"Status: {result.status_code}"
f"\nReason: {result.reason}"
f"\nMessage: {result.json()['error']['message']}"
)
```
#### By Search (Elasticsearch)
```python
es_query = {
"query": {
"bool": {
"must": [
{"term": {"location_country": "mexico"}},
{"term": {"job_title_role": "health"}},
]
}
}
}
data = {
"query": es_query,
"size": 10,
"pretty": True,
"dataset": "phone, mobile_phone",
}
result = client.person.search(**data)
if result.ok:
print(result.text)
else:
print(
f"Status: {result.status_code}"
f"\nReason: {result.reason}"
f"\nMessage: {result.json()['error']['message']}"
)
```
#### By Search (SQL)
```python
sql_query = (
"SELECT * FROM person"
" WHERE location_country='mexico'"
" AND job_title_role='health'"
" AND phone_numbers IS NOT NULL;"
)
data = {
"sql": sql_query,
"size": 10,
"pretty": True,
"dataset": "phone, mobile_phone",
}
result = client.person.search(**data)
if result.ok:
print(result.text)
else:
print(
f"Status: {result.status_code}"
f"\nReason: {result.reason}"
f"\nMessage: {result.json()['error']['message']}"
)
```
#### By `PDL_ID` (Retrieve API)
```python
result = client.person.retrieve(
person_id="qEnOZ5Oh0poWnQ1luFBfVw_0000",
)
if result.ok:
print(result.text)
else:
print(
f"Status: {result.status_code}"
f"\nReason: {result.reason}"
f"\nMessage: {result.json()['error']['message']}"
)
```
#### By Fuzzy Enrichment (Identify API)
```python
result = client.person.enrichment(
name="sean thorne",
pretty=True,
)
if result.ok:
print(result.text)
else:
print(
f"Status: {result.status_code}"
f"\nReason: {result.reason}"
f"\nMessage: {result.json()['error']['message']}"
)
```
### Getting Company Data
#### By Enrichment
```python
result = client.company.enrichment(
website="peopledatalabs.com",
pretty=True,
)
if result.ok:
print(result.text)
else:
print(
f"Status: {result.status_code}"
f"\nReason: {result.reason}"
f"\nMessage: {result.json()['error']['message']}"
)
```
#### By Bulk Enrichment
```python
result = client.company.bulk(
requests=[
{
"metadata": {
"company_id": "123"
},
"params": {
"profile": "linkedin.com/company/peopledatalabs",
}
},
{
"metadata": {
"company_id": "345"
},
"params": {
"profile": "https://www.linkedin.com/company/apple/",
}
}
]
)
if result.ok:
print(result.text)
else:
print(
f"Status: {result.status_code}"
f"\nReason: {result.reason}"
f"\nMessage: {result.json()['error']['message']}"
)
```
#### By Search (Elasticsearch)
```python
es_query = {
"query": {
"bool": {
"must": [
{"term": {"tags": "big data"}},
{"term": {"industry": "financial services"}},
{"term": {"location.country": "united states"}},
]
}
}
}
data = {
"query": es_query,
"size": 10,
"pretty": True,
}
result = client.company.search(**data)
if result.ok:
print(result.text)
else:
print(
f"Status: {result.status_code}"
f"\nReason: {result.reason}"
f"\nMessage: {result.json()['error']['message']}"
)
```
#### By Search (SQL)
```python
sql_query = (
"SELECT * FROM company"
" WHERE tags='big data'"
" AND industry='financial services'"
" AND location.country='united states';"
)
data = {
"sql": sql_query,
"size": 10,
"pretty": True,
}
result = client.company.search(**data)
if result.ok:
print(result.text)
else:
print(
f"Status: {result.status_code}"
f"\nReason: {result.reason}"
f"\nMessage: {result.json()['error']['message']}"
)
```
### Using supporting APIs
#### Get Autocomplete Suggestions
```python
result = client.autocomplete(
field="title",
text="full",
size=10,
)
if result.ok:
print(result.text)
else:
print(
f"Status: {result.status_code}"
f"\nReason: {result.reason}"
f"\nMessage: {result.json()['error']['message']}"
)
```
#### Clean Raw Company Strings
```python
result = client.company.cleaner(
name="peOple DaTa LabS",
)
if result.ok:
print(result.text)
else:
print(
f"Status: {result.status_code}"
f"\nReason: {result.reason}"
f"\nMessage: {result.json()['error']['message']}"
)
```
#### Clean Raw Location Strings
```python
result = client.location.cleaner(
location="455 Market Street, San Francisco, California 94105, US",
)
if result.ok:
print(result.text)
else:
print(
f"Status: {result.status_code}"
f"\nReason: {result.reason}"
f"\nMessage: {result.json()['error']['message']}"
)
```
#### Clean Raw School Strings
```python
result = client.school.cleaner(
name="university of oregon",
)
if result.ok:
print(result.text)
else:
print(
f"Status: {result.status_code}"
f"\nReason: {result.reason}"
f"\nMessage: {result.json()['error']['message']}"
)
```
#### Get Job Title Enrichment
```python
result = client.job_title(
job_title="data scientist",
)
if result.ok:
print(result.text)
else:
print(
f"Status: {result.status_code}"
f"\nReason: {result.reason}"
f"\nMessage: {result.json()['error']['message']}"
)
```
#### Get Skill Enrichment
```python
result = client.skill(
skill="c++",
)
if result.ok:
print(result.text)
else:
print(
f"Status: {result.status_code}"
f"\nReason: {result.reason}"
f"\nMessage: {result.json()['error']['message']}"
)
```
#### Get IP Enrichment
```python
result = client.ip(
ip="72.212.42.169",
)
if result.ok:
print(result.text)
else:
print(
f"Status: {result.status_code};"
f"\nReason: {result.reason};"
f"\nMessage: {result.json()['error']['message']};"
)
```
## 🏝 Sandbox Usage <a name="sandbox"></a>
#### To enable sandbox usage, use the sandbox flag on PDLPY
```python
PDLPY(sandbox=True)
```
## 🌐 Endpoints <a name="endpoints"></a>
**Person Endpoints**
| API Endpoint | PDLPY Function |
| ----------------------------------------------------------------------------------------------- | ----------------------------------- |
| [Person Enrichment API](https://docs.peopledatalabs.com/docs/enrichment-api) | `PDLPY.person.enrichment(**params)` |
| [Person Bulk Enrichment API](https://docs.peopledatalabs.com/docs/bulk-enrichment-api) | `PDLPY.person.bulk(**params)` |
| [Person Search API](https://docs.peopledatalabs.com/docs/search-api) | `PDLPY.person.search(**params)` |
| [Person Retrieve API](https://docs.peopledatalabs.com/docs/person-retrieve-api) | `PDLPY.person.retrieve(**params)` |
| [Person Identify API](https://docs.peopledatalabs.com/docs/identify-api) | `PDLPY.person.identify(**params)` |
**Company Endpoints**
| API Endpoint | PDLPY Function |
| ----------------------------------------------------------------------------------------------- | ------------------------------------ |
| [Company Enrichment API](https://docs.peopledatalabs.com/docs/company-enrichment-api) | `PDLPY.company.enrichment(**params)` |
| [Company Bulk Enrichment API](https://docs.peopledatalabs.com/docs/bulk-company-enrichment-api) | `PDLPY.company.bulk(**params)` |
| [Company Search API](https://docs.peopledatalabs.com/docs/company-search-api) | `PDLPY.company.search(**params)` |
**Supporting Endpoints**
| API Endpoint | PDLJS Function |
| ----------------------------------------------------------------------------------------- | ---------------------------------- |
| [Autocomplete API](https://docs.peopledatalabs.com/docs/autocomplete-api) | `PDLPY.autocomplete(**params)` |
| [Company Cleaner API](https://docs.peopledatalabs.com/docs/cleaner-apis#companyclean) | `PDLPY.company.cleaner(**params)` |
| [Location Cleaner API](https://docs.peopledatalabs.com/docs/cleaner-apis#locationclean) | `PDLPY.location.cleaner(**params)` |
| [School Cleaner API](https://docs.peopledatalabs.com/docs/cleaner-apis#schoolclean) | `PDLPY.school.cleaner(**params)` |
| [Job Title Enrichment API](https://docs.peopledatalabs.com/docs/job-title-enrichment-api) | `PDLPY.job_title(**params)` |
| [Skill Enrichment API](https://docs.peopledatalabs.com/docs/skill-enrichment-api) | `PDLPY.skill(**params)` |
| [IP Enrichment API](https://docs.peopledatalabs.com/docs/ip-enrichment-api) | `PDLPY.ip(**params)` |
## 📘 Documentation <a name="documentation"></a>
All of our API endpoints are documented at: https://docs.peopledatalabs.com/
These docs describe the supported input parameters, output responses and also provide additional technical context.
As illustrated in the [Endpoints](#endpoints) section above, each of our API endpoints is mapped to a specific method in the PDLPY class. For each of these class methods, **all function inputs are mapped as input parameters to the respective API endpoint**, meaning that you can use the API documentation linked above to determine the input parameters for each endpoint.
As an example:
The following is **valid** because `name` is a [supported input parameter to the Person Identify API](https://docs.peopledatalabs.com/docs/identify-api-reference#input-parameters):
```python
PDLPY().person.identify({"name": "sean thorne"})
```
Conversely, this would be **invalid** because `fake_parameter` is not an input parameter to the Person Identify API:
```python
PDLPY().person.identify({"fake_parameter": "anything"})
```
### Upgrading to v2.X.X <a name="upgrading-to-v2"></a>
NOTE: When upgrading to v2.X.X from vX.X.X and below, the minimum required python version is now 3.8.
### Upgrading to v3.X.X <a name="upgrading-to-v3"></a>
NOTE: When upgrading to v3.X.X from vX.X.X and below, the minimum required pydantic version is now 2.
### Upgrading to v4.X.X <a name="upgrading-to-v4"></a>
NOTE: When upgrading to v4.X.X from vX.X.X and below, we no longer auto load the API key from the environment variable `PDL_API_KEY`. You must now pass the API key as a parameter to the `PDLPY` class.
Raw data
{
"_id": null,
"home_page": "https://www.peopledatalabs.com",
"name": "peopledatalabs",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": "data enrichment, people data labs, person enrichment, company enrichment, search",
"author": "People Data Labs",
"author_email": "hello@peopledatalabs.com",
"download_url": "https://files.pythonhosted.org/packages/b8/5d/eec32afb5f3699358e208086825b411953e39b54ef2e24acc60d0e5fdd7c/peopledatalabs-4.1.5.tar.gz",
"platform": null,
"description": "<p align=\"center\">\n<img src=\"https://www.peopledatalabs.com/images/company-logo.png\" style=\"background-color: white; padding: 5px 10px;\" width=\"250\" alt=\"People Data Labs Logo\">\n</p>\n<h1 align=\"center\">People Data Labs Python Client</h1>\n<p align=\"center\">Official Python client for the People Data Labs API.</p>\n\n<p align=\"center\">\n <a href=\"https://github.com/peopledatalabs/peopledatalabs-python\">\n <img src=\"https://img.shields.io/badge/repo%20status-Active-limegreen\" alt=\"Repo Status\">\n </a> \n <a href=\"https://pypi.org/project/peopledatalabs/\">\n <img src=\"https://img.shields.io/pypi/v/peopledatalabs.svg?logo=pypi&logoColor=fff&label=PyPI+package&color=limegreen\" alt=\"People Data Labs on PyPI\" />\n </a> \n <a href=\"https://pypi.org/project/peopledatalabs/\">\n <img src=\"https://img.shields.io/pypi/pyversions/peopledatalabs.svg\" alt=\"People Data Labs on PyPI\" />\n </a> \n <a href=\"https://github.com/peopledatalabs/peopledatalabs-python/actions/workflows/python-poetry.yml\">\n <img src=\"https://github.com/peopledatalabs/peopledatalabs-python/actions/workflows/python-poetry.yml/badge.svg\" alt=\"Tests Status\" />\n </a>\n</p>\n\n## Table of Contents\n\n- [\ud83d\udd27 Installation](#installation)\n- [\ud83d\ude80 Usage](#usage)\n- [\ud83c\udfdd Sandbox Usage](#sandbox)\n- [\ud83c\udf10 Endpoints](#endpoints)\n- [\ud83d\udcd8 Documentation](#documentation)\n - [Upgrading to v2.X.X](#upgrading-to-v2)\n - [Upgrading to v3.X.X](#upgrading-to-v3)\n - [Upgrading to v4.X.X](#upgrading-to-v4)\n\n\n## \ud83d\udd27 Installation <a name=\"installation\"></a>\n\n1. Install from PyPi using [pip](https://pip.pypa.io/en/latest/), a package manager for Python.\n\n ```bash\n pip install peopledatalabs\n ```\n\n2. Sign up for a [free PDL API key](https://www.peopledatalabs.com/signup).\n\n## \ud83d\ude80 Usage <a name=\"usage\"></a>\n\nFirst, create the PDLPY client:\n\n```python\nfrom peopledatalabs import PDLPY\n\n\n# specify your API key\nclient = PDLPY(\n api_key=\"YOUR API KEY\",\n)\n\n```\n\nThen, send requests to any PDL API Endpoint.\n\n### Getting Person Data\n\n#### By Enrichment\n\n```python\nresult = client.person.enrichment(\n phone=\"4155688415\",\n pretty=True,\n)\nif result.ok:\n print(result.text)\nelse:\n print(\n f\"Status: {result.status_code};\"\n f\"\\nReason: {result.reason};\"\n f\"\\nMessage: {result.json()['error']['message']};\"\n )\n```\n\n#### By Bulk Enrichment\n\n```python\nresult = client.person.bulk(\n required=\"emails AND profiles\",\n requests=[\n {\n \"metadata\": {\n \"user_id\": \"123\"\n },\n \"params\": {\n \"profile\": [\"linkedin.com/in/seanthorne\"],\n \"location\": [\"SF Bay Area\"],\n \"name\": [\"Sean F. Thorne\"],\n }\n },\n {\n \"metadata\": {\n \"user_id\": \"345\"\n },\n \"params\": {\n \"profile\": [\"https://www.linkedin.com/in/haydenconrad/\"],\n \"first_name\": \"Hayden\",\n \"last_name\": \"Conrad\",\n }\n }\n ]\n)\nif result.ok:\n print(result.text)\nelse:\n print(\n f\"Status: {result.status_code}\"\n f\"\\nReason: {result.reason}\"\n f\"\\nMessage: {result.json()['error']['message']}\"\n )\n```\n\n#### By Search (Elasticsearch)\n\n```python\nes_query = {\n \"query\": {\n \"bool\": {\n \"must\": [\n {\"term\": {\"location_country\": \"mexico\"}},\n {\"term\": {\"job_title_role\": \"health\"}},\n ]\n }\n }\n}\ndata = {\n \"query\": es_query,\n \"size\": 10,\n \"pretty\": True,\n \"dataset\": \"phone, mobile_phone\",\n}\nresult = client.person.search(**data)\nif result.ok:\n print(result.text)\nelse:\n print(\n f\"Status: {result.status_code}\"\n f\"\\nReason: {result.reason}\"\n f\"\\nMessage: {result.json()['error']['message']}\"\n )\n```\n\n#### By Search (SQL)\n\n```python\nsql_query = (\n \"SELECT * FROM person\"\n \" WHERE location_country='mexico'\"\n \" AND job_title_role='health'\"\n \" AND phone_numbers IS NOT NULL;\"\n)\ndata = {\n \"sql\": sql_query,\n \"size\": 10,\n \"pretty\": True,\n \"dataset\": \"phone, mobile_phone\",\n}\nresult = client.person.search(**data)\nif result.ok:\n print(result.text)\nelse:\n print(\n f\"Status: {result.status_code}\"\n f\"\\nReason: {result.reason}\"\n f\"\\nMessage: {result.json()['error']['message']}\"\n )\n```\n\n#### By `PDL_ID` (Retrieve API)\n\n```python\nresult = client.person.retrieve(\n person_id=\"qEnOZ5Oh0poWnQ1luFBfVw_0000\",\n)\nif result.ok:\n print(result.text)\nelse:\n print(\n f\"Status: {result.status_code}\"\n f\"\\nReason: {result.reason}\"\n f\"\\nMessage: {result.json()['error']['message']}\"\n )\n```\n\n#### By Fuzzy Enrichment (Identify API)\n\n```python\nresult = client.person.enrichment(\n name=\"sean thorne\",\n pretty=True,\n)\nif result.ok:\n print(result.text)\nelse:\n print(\n f\"Status: {result.status_code}\"\n f\"\\nReason: {result.reason}\"\n f\"\\nMessage: {result.json()['error']['message']}\"\n )\n```\n\n### Getting Company Data\n\n#### By Enrichment\n\n```python\nresult = client.company.enrichment(\n website=\"peopledatalabs.com\",\n pretty=True,\n)\nif result.ok:\n print(result.text)\nelse:\n print(\n f\"Status: {result.status_code}\"\n f\"\\nReason: {result.reason}\"\n f\"\\nMessage: {result.json()['error']['message']}\"\n )\n```\n\n#### By Bulk Enrichment\n\n```python\nresult = client.company.bulk(\n requests=[\n {\n \"metadata\": {\n \"company_id\": \"123\"\n },\n \"params\": {\n \"profile\": \"linkedin.com/company/peopledatalabs\",\n }\n },\n {\n \"metadata\": {\n \"company_id\": \"345\"\n },\n \"params\": {\n \"profile\": \"https://www.linkedin.com/company/apple/\",\n }\n }\n ]\n)\nif result.ok:\n print(result.text)\nelse:\n print(\n f\"Status: {result.status_code}\"\n f\"\\nReason: {result.reason}\"\n f\"\\nMessage: {result.json()['error']['message']}\"\n )\n```\n\n#### By Search (Elasticsearch)\n\n```python\nes_query = {\n \"query\": {\n \"bool\": {\n \"must\": [\n {\"term\": {\"tags\": \"big data\"}},\n {\"term\": {\"industry\": \"financial services\"}},\n {\"term\": {\"location.country\": \"united states\"}},\n ]\n }\n }\n}\ndata = {\n \"query\": es_query,\n \"size\": 10,\n \"pretty\": True,\n}\nresult = client.company.search(**data)\nif result.ok:\n print(result.text)\nelse:\n print(\n f\"Status: {result.status_code}\"\n f\"\\nReason: {result.reason}\"\n f\"\\nMessage: {result.json()['error']['message']}\"\n )\n```\n\n#### By Search (SQL)\n\n```python\nsql_query = (\n \"SELECT * FROM company\"\n \" WHERE tags='big data'\"\n \" AND industry='financial services'\"\n \" AND location.country='united states';\"\n)\ndata = {\n \"sql\": sql_query,\n \"size\": 10,\n \"pretty\": True,\n}\nresult = client.company.search(**data)\nif result.ok:\n print(result.text)\nelse:\n print(\n f\"Status: {result.status_code}\"\n f\"\\nReason: {result.reason}\"\n f\"\\nMessage: {result.json()['error']['message']}\"\n )\n```\n\n### Using supporting APIs\n\n#### Get Autocomplete Suggestions\n\n```python\nresult = client.autocomplete(\n field=\"title\",\n text=\"full\",\n size=10,\n)\nif result.ok:\n print(result.text)\nelse:\n print(\n f\"Status: {result.status_code}\"\n f\"\\nReason: {result.reason}\"\n f\"\\nMessage: {result.json()['error']['message']}\"\n )\n```\n\n#### Clean Raw Company Strings\n\n```python\nresult = client.company.cleaner(\n name=\"peOple DaTa LabS\",\n)\nif result.ok:\n print(result.text)\nelse:\n print(\n f\"Status: {result.status_code}\"\n f\"\\nReason: {result.reason}\"\n f\"\\nMessage: {result.json()['error']['message']}\"\n )\n```\n\n#### Clean Raw Location Strings\n\n```python\nresult = client.location.cleaner(\n location=\"455 Market Street, San Francisco, California 94105, US\",\n)\nif result.ok:\n print(result.text)\nelse:\n print(\n f\"Status: {result.status_code}\"\n f\"\\nReason: {result.reason}\"\n f\"\\nMessage: {result.json()['error']['message']}\"\n )\n```\n\n#### Clean Raw School Strings\n\n```python\nresult = client.school.cleaner(\n name=\"university of oregon\",\n)\nif result.ok:\n print(result.text)\nelse:\n print(\n f\"Status: {result.status_code}\"\n f\"\\nReason: {result.reason}\"\n f\"\\nMessage: {result.json()['error']['message']}\"\n )\n```\n\n#### Get Job Title Enrichment\n\n```python\nresult = client.job_title(\n job_title=\"data scientist\",\n)\nif result.ok:\n print(result.text)\nelse:\n print(\n f\"Status: {result.status_code}\"\n f\"\\nReason: {result.reason}\"\n f\"\\nMessage: {result.json()['error']['message']}\"\n )\n```\n\n#### Get Skill Enrichment\n\n```python\nresult = client.skill(\n skill=\"c++\",\n)\nif result.ok:\n print(result.text)\nelse:\n print(\n f\"Status: {result.status_code}\"\n f\"\\nReason: {result.reason}\"\n f\"\\nMessage: {result.json()['error']['message']}\"\n )\n```\n\n#### Get IP Enrichment\n\n```python\nresult = client.ip(\n ip=\"72.212.42.169\",\n)\nif result.ok:\n print(result.text)\nelse:\n print(\n f\"Status: {result.status_code};\"\n f\"\\nReason: {result.reason};\"\n f\"\\nMessage: {result.json()['error']['message']};\"\n )\n```\n\n## \ud83c\udfdd Sandbox Usage <a name=\"sandbox\"></a>\n#### To enable sandbox usage, use the sandbox flag on PDLPY\n\n```python\nPDLPY(sandbox=True)\n```\n\n## \ud83c\udf10 Endpoints <a name=\"endpoints\"></a>\n\n**Person Endpoints**\n\n| API Endpoint | PDLPY Function |\n| ----------------------------------------------------------------------------------------------- | ----------------------------------- |\n| [Person Enrichment API](https://docs.peopledatalabs.com/docs/enrichment-api) | `PDLPY.person.enrichment(**params)` |\n| [Person Bulk Enrichment API](https://docs.peopledatalabs.com/docs/bulk-enrichment-api) | `PDLPY.person.bulk(**params)` |\n| [Person Search API](https://docs.peopledatalabs.com/docs/search-api) | `PDLPY.person.search(**params)` |\n| [Person Retrieve API](https://docs.peopledatalabs.com/docs/person-retrieve-api) | `PDLPY.person.retrieve(**params)` |\n| [Person Identify API](https://docs.peopledatalabs.com/docs/identify-api) | `PDLPY.person.identify(**params)` |\n\n**Company Endpoints**\n\n| API Endpoint | PDLPY Function |\n| ----------------------------------------------------------------------------------------------- | ------------------------------------ |\n| [Company Enrichment API](https://docs.peopledatalabs.com/docs/company-enrichment-api) | `PDLPY.company.enrichment(**params)` |\n| [Company Bulk Enrichment API](https://docs.peopledatalabs.com/docs/bulk-company-enrichment-api) | `PDLPY.company.bulk(**params)` |\n| [Company Search API](https://docs.peopledatalabs.com/docs/company-search-api) | `PDLPY.company.search(**params)` |\n\n**Supporting Endpoints**\n\n| API Endpoint | PDLJS Function |\n| ----------------------------------------------------------------------------------------- | ---------------------------------- |\n| [Autocomplete API](https://docs.peopledatalabs.com/docs/autocomplete-api) | `PDLPY.autocomplete(**params)` |\n| [Company Cleaner API](https://docs.peopledatalabs.com/docs/cleaner-apis#companyclean) | `PDLPY.company.cleaner(**params)` |\n| [Location Cleaner API](https://docs.peopledatalabs.com/docs/cleaner-apis#locationclean) | `PDLPY.location.cleaner(**params)` |\n| [School Cleaner API](https://docs.peopledatalabs.com/docs/cleaner-apis#schoolclean) | `PDLPY.school.cleaner(**params)` |\n| [Job Title Enrichment API](https://docs.peopledatalabs.com/docs/job-title-enrichment-api) | `PDLPY.job_title(**params)` |\n| [Skill Enrichment API](https://docs.peopledatalabs.com/docs/skill-enrichment-api) | `PDLPY.skill(**params)` |\n| [IP Enrichment API](https://docs.peopledatalabs.com/docs/ip-enrichment-api) | `PDLPY.ip(**params)` |\n\n## \ud83d\udcd8 Documentation <a name=\"documentation\"></a>\n\nAll of our API endpoints are documented at: https://docs.peopledatalabs.com/\n\nThese docs describe the supported input parameters, output responses and also provide additional technical context.\n\nAs illustrated in the [Endpoints](#endpoints) section above, each of our API endpoints is mapped to a specific method in the PDLPY class. For each of these class methods, **all function inputs are mapped as input parameters to the respective API endpoint**, meaning that you can use the API documentation linked above to determine the input parameters for each endpoint.\n\nAs an example:\n\nThe following is **valid** because `name` is a [supported input parameter to the Person Identify API](https://docs.peopledatalabs.com/docs/identify-api-reference#input-parameters):\n\n```python\nPDLPY().person.identify({\"name\": \"sean thorne\"})\n```\n\nConversely, this would be **invalid** because `fake_parameter` is not an input parameter to the Person Identify API:\n\n```python\nPDLPY().person.identify({\"fake_parameter\": \"anything\"})\n```\n\n### Upgrading to v2.X.X <a name=\"upgrading-to-v2\"></a>\n\nNOTE: When upgrading to v2.X.X from vX.X.X and below, the minimum required python version is now 3.8.\n\n### Upgrading to v3.X.X <a name=\"upgrading-to-v3\"></a>\n\nNOTE: When upgrading to v3.X.X from vX.X.X and below, the minimum required pydantic version is now 2.\n\n### Upgrading to v4.X.X <a name=\"upgrading-to-v4\"></a>\n\nNOTE: When upgrading to v4.X.X from vX.X.X and below, we no longer auto load the API key from the environment variable `PDL_API_KEY`. You must now pass the API key as a parameter to the `PDLPY` class.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Official Python client for the People Data Labs API",
"version": "4.1.5",
"project_urls": {
"Bug Tracker": "https://github.com/peopledatalabs/peopledatalabs-python/issues",
"Documentation": "https://docs.peopledatalabs.com",
"Homepage": "https://www.peopledatalabs.com",
"Repository": "https://github.com/peopledatalabs/peopledatalabs-python",
"Source Code": "https://github.com/peopledatalabs/peopledatalabs-python"
},
"split_keywords": [
"data enrichment",
" people data labs",
" person enrichment",
" company enrichment",
" search"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "33baff5c6869fe85c6d94d7cc1fdd64218597e8d1fd8ce3264624cede1a6eb50",
"md5": "f82ec0623456318cc49e539905f38096",
"sha256": "064dca411fad4fc5fded54b93e05dbb57aa711b379a0aa68bbf7eb4dabc8f546"
},
"downloads": -1,
"filename": "peopledatalabs-4.1.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f82ec0623456318cc49e539905f38096",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 17924,
"upload_time": "2024-12-09T14:18:25",
"upload_time_iso_8601": "2024-12-09T14:18:25.910028Z",
"url": "https://files.pythonhosted.org/packages/33/ba/ff5c6869fe85c6d94d7cc1fdd64218597e8d1fd8ce3264624cede1a6eb50/peopledatalabs-4.1.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b85deec32afb5f3699358e208086825b411953e39b54ef2e24acc60d0e5fdd7c",
"md5": "7ff855bbd16d85ada51cd4424cdf7ba7",
"sha256": "d92f42cc661432fee480a622d14f44deabeb9ed6bca16805da788cc933b4b5f3"
},
"downloads": -1,
"filename": "peopledatalabs-4.1.5.tar.gz",
"has_sig": false,
"md5_digest": "7ff855bbd16d85ada51cd4424cdf7ba7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 14252,
"upload_time": "2024-12-09T14:18:27",
"upload_time_iso_8601": "2024-12-09T14:18:27.635666Z",
"url": "https://files.pythonhosted.org/packages/b8/5d/eec32afb5f3699358e208086825b411953e39b54ef2e24acc60d0e5fdd7c/peopledatalabs-4.1.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-09 14:18:27",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "peopledatalabs",
"github_project": "peopledatalabs-python",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "peopledatalabs"
}