from time import sleep
import requests, json, csv
API_KEY = "YOUR API KEY"
PDL_COMPANY_SEARCH_URL = "https://api.peopledatalabs.com/v5/company/search"
PDL_PERSON_SEARCH_URL = "https://api.peopledatalabs.com/v5/person/search"
all_records = []
HEADERS = {
'Content-Type': "application/json",
'X-api-key': API_KEY
}
ES_QUERY = {
"query": {
"bool": {
"must": [
{"term": {"industry": "computer software"}},
{"range": {"employee_count": { "gt": 1000 }}}
]
}
}
}
PARAMS = {
'query': json.dumps(ES_QUERY),
'size': 10
}
response = requests.get(
PDL_COMPANY_SEARCH_URL,
headers = HEADERS,
params = PARAMS
).json()
if response["status"] == 200:
data = response['data']
for record in data:
ES_QUERY = {
"query": {
"bool": {
"must": [
{"term": {"job_company_id": record['id']}},
{"term": {"job_title_levels": "director"}},
{"term": {"job_title_role": "engineering"}},
]
}
}
}
PARAMS = {
'query': json.dumps(ES_QUERY),
'size': 10
}
response = requests.get(
PDL_PERSON_SEARCH_URL,
headers = HEADERS,
params = PARAMS
).json()
if response["status"] == 200:
data = response['data']
all_records.extend(data)
else:
print("Person Search Error:", response)
else:
print("Company Search Error:", response)
# Save profiles to csv (utility function)
def save_profiles_to_csv(profiles, filename, fields = [], delim = ','):
# Define header fields
if fields == [] and len(profiles) > 0:
fields = profiles[0].keys()
# Write csv file
with open(filename, 'w') as csvfile:
writer = csv.writer(csvfile, delimiter=delim)
# Write Header:
writer.writerow(fields)
# Write Body:
count = 0
for profile in profiles:
writer.writerow([ profile[field] for field in fields ])
count += 1
print(f"Wrote {count} lines to: '{filename}'")
# Use utility function to save profiles to csv
csv_header_fields = ['full_name', 'job_title', 'job_company_name', 'job_company_website', 'work_email', 'mobile_phone', "linkedin_url"]
csv_filename = "lead_list.csv"
save_profiles_to_csv(all_records, csv_filename, csv_header_fields)