YOUR_API_KEY with your API key, then modify the request payload as needed.
If you want a more guided first walkthrough, start with the Quickstart.
🔍 Browse Examples
Click to see the full list of examples on this page
Click to see the full list of examples on this page
Exact ID Lookup
Company Filters
- Basic Search: Company + Title
- Search by Company ID
- Search by Company Name
- Search by LinkedIn Profile
- Search by Company Industry
Title & Role Filters
Location Filters
Date & Activity Filters
Compensation Filters
- Filter by Salary Range + Currency + Period
- Filter by Remote Work Policy
- Combined Multi-Filter Search
Text & Content Filters
Bulk Retrieval
Elasticsearch Query Examples
Heads Up! Credit UsageJob Posting Search API calls cost 1 credit for each job posting record returned.If you are making a search that could have a large number of results, make sure to use the
size parameter to control the maximum number of records returned per request and cap your credit usage.Found a bug? Is there an example you’d like to see that’s not listed here?Head over to the public roadmap and submit a bug ticket or a feature request and receive automatic notifications as your bug is resolved or your request is implemented.
Field Filter Examples
Use Field Filters when the request can be expressed using supported fields. Multiple Field Filters are combined withAND logic.
Choosing Between Field Filters and
queryUse Field Filters for standard filtering by company, title, location, salary, dates, and activity status.Use query when you need logic that Field Filters do not support well, such as OR, must_not, exists, or searching across lists of values.Exact ID lookup
Search by Exact Job Posting ID
Use this when you already know the specific PDL job posting ID you want to retrieve.Give me the job posting with this exact PDL job posting ID.
Python
Company filters
Basic Search: Company + Title
Use this when you want a simple company + job title search using built-in field filters.Show me open job postings at OpenAI with “engineer” in the title.
Python
Company Filter Tips
company_website is the most commonly used identifier in practice for specifying a company.company_name is cleaner-backed and convenient when you only know the company by name.company_id is the most precise company filter when you already have the PDL company ID.For additional details see our FAQs: What is the most precise way to search for a company?Search by Company ID
Use this when you know the PDLcompany_id and want the most precise company filter. Typically a PDL company_id will come from using our Company Search API or Company Enrichment API.
Show me open engineering job postings for this exact PDL company.
Python
Search by Company Name
Use this when you don’t have a unique identifier for a company and want cleaner-backed fuzzy matching oncompany_name.
Show me open engineering job postings for Open AI.
Python
Search by Company LinkedIn Profile
Use this when you want to search job postings for a company using its LinkedIn company URL.Show me open job postings for OpenAI.
Python
Search by Company Industry
Use this when you want to search job postings based on the company’s industry classification.Show me active engineering job postings at companies in software development.
Python
company_industry values come from Canonical Industries, while company_industry_v2 values come from Canonical V2 Industries.Search by Title Taxonomy
Use PDL’s normalized title fields when you want structured title filters instead of free-text title matching.Show me open senior data engineering jobs in the research and development title class.
Python
title_sub_role, and title_levels.
Show me open vp-level finance jobs class.
Python
title_role, and title_levels.
Search by Multiple Title Taxonomy Values
Use this when you want to provide multiple comma-separated values for canonical taxonomy fields liketitle_class, title_role, title_sub_role, and title_levels.
Show me open jobs that are senior OR manager roles in data engineering OR data science
Python
Location filters
Thelocation input is flexible and can match countries, continents, regions, cities, and more.
Job Posts with Multiple LocationsJust a reminder that PDL job posting records can contain multiple locations. As a result, using the
location filter will return job posts where at least one of the posted locations matches the provided input.Country-level location
Show me open sales jobs in Germany.
Python
City-level location
Show me open engineering jobs in Seattle.
Python
Region-level location
Show me open engineering jobs in Ontario, Canada.
Python
Continent-level location
Show me open marketing jobs in Europe.
Python
Date and activity filters
Date Filter Cheat Sheet
- Use
first_seen_min,deactivated_date_min, orlast_verified_minfor inclusive lower bounds. - Use
is_activeto filter to active jobs - Use the corresponding
*_maxfields for inclusive upper bounds. - To match a single day exactly, set the
*_minand*_maxfields to the sameYYYY-MM-DDdate.
Search by Exact Date
Use parameterized date fields when you want to match a date range.Show me all job postings posted between January 1, 2026 and January 15, 2026.
Python
Search by Last Verified Date
Use this when you want job postings that were verified recently by PDL.Show me open job postings that PDL verified within the last two days.
Python
Recently Deactivated Jobs
Use this when you want historical job postings that were deactivated within a specific date range.Show me jobs that were deactivated during March 2026.
Python
Active Jobs Only
Use the built-inis_active field filter when you want only active job postings. If is_active is not included, it is defaulted to False
Show me only true job postings for engineers.
Python
Compensation filters
Filter by Salary Range + Currency + Period
Use this when you want compensation filters with explicit salary units.Show me engineering jobs with annual salaries between 300,000 USD.
Python
Filter by Remote Work Policy
Use this when you want jobs with a specific remote work policy value.Show me active remote engineering jobs.
Python
Combined Multi-Filter Search
Use this when you want to combine multiple field filters with built-inAND behavior.
Show me active remote jobs in the United States with annual salaries of at least $150,000 USD.
Python
Text and content filters
Text Matching Behavior
titleuses cleanedmatch_phrasebehavior.descriptionusesmatch_phrasebehavior on the cleaned text description.inferred_skillsusesmatch, which is broader thanmatch_phrase.
Search by Description Text
Use this when you want to find jobs whose descriptions contain a specific phrase.Show me active job postings whose descriptions mention “unlimited PTO”.
Python
Search by Inferred Skills
Use this when you want to search the skills extracted from the job posting description.Show me active job postings that mention or imply requiring JavaScript skills.
Python
Bulk Retrieval Examples
Paginate with scroll_token
Use this when a query matches more records than you want to retrieve in a single response.
Give me the 10 results for the same search over two pages.
Python
Save Results to a JSON File
Run this search and save the full API response to a local JSON file.
Python
Elasticsearch Query Examples
Use thequery field when you need search logic that Field Filters do not support, such as OR conditions, exists queries, or multi-company searches.
Choosing Between Field Filters and
query- Start with Field Filters when you want simple filtering by documented input parameters.
- Use
querywhen you needOR,must_not,exists, or other custom Elasticsearch logic. - If you provide both Field Filters and
query, thequerytakes precedence and the Field Filters are ignored.
OR logic
OR Logic: Data Engineer or Machine Learning Engineer
Show me jobs for either data engineers or machine learning engineers.
Python
must + should: One of Several Titles Plus a Seniority Constraint
Use this when you want to require one condition and allow multiple title alternatives.
Show me senior jobs for either data engineers or analytics engineers.
Python
Range logic
Date Range Query
Use this when you want a custom Elasticsearch date range query, or when you need date logic beyond the built-in field filters.Show me jobs first seen during January 2026.
Dates in ElasticsearchIn Elasticsearch date queries, you can use either
YYYY-MM-DD strings or integer timestamps in milliseconds. The example below uses YYYY-MM-DD strings for readability.Python
2026-01-01 and before 2026-02-01.
Existence and exclusion logic
Only Jobs with Salary Data
Use this when you want job postings where salary information is present.Show me only job postings that include salary data.
Python
Exclude Internship Roles
Use this when you want to remove a class of jobs from the results withmust_not.
Show me engineering jobs, but leave out internship roles.
Python
Combined advanced queries
Search Across Multiple Companies
Use aterms query when you want to search across a list of company IDs.
Show me job postings across this list of companies.
Query Array LimitAny array in an Elasticsearch
query (such as a terms array) has a hard limit of 100 elements. If your request goes over this limit, it will fail.See query limitations for the full details.Python
Combined Query: Company List + Date Range + Title Match
Use this when you want to combine multiple company IDs, title matching, and afirst_seen cutoff date in one Elasticsearch query.
Show me engineer jobs at these companies that were first seen on or after January 1, 2026.
Python
Choosing Between Field Filters and query
Quick Decision Guide
- Start with Field Filters when you want simple filtering by documented input parameters.
- Use
querywhen you needOR,must_not,exists, or other custom Elasticsearch logic. - If you provide both Field Filters and
query, thequerytakes precedence and the Field Filters are ignored.
