Real-Time Jobs API | LinkedIn, Indeed, Workday, Glassdoor,...
Pricing
from $1.00 / 1,000 results
Real-Time Jobs API | LinkedIn, Indeed, Workday, Glassdoor,...
Real-time Jobs API aggregating LinkedIn, Indeed, Workday, Glassdoor, ZipRecruiter, XING, Arbeitsagentur, ICIMS, Talent.com, Randstad, Hays, Recruit.net, Bayt, Built In, Job Bank Canada, Walmart Careers, Uber Careers, and more.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(21)
Developer
Hermann Samimi
Maintained by CommunityActor stats
21
Bookmarked
31
Total users
4
Monthly active users
0.18 hours
Issues response
3 days ago
Last modified
Categories
Share
Pingrole Job Search API
Fast, structured, and continuously updated job listings from Germany, Canada, the USA, the Netherlands, and the UK β sourced from LinkedIn, Indeed, and other major job boards.
Search by title, company, location, remote status, language, job-type flags, and more. Results are returned as clean, ready-to-use JSON records with 30+ data points per listing.
Coverage: π©πͺ Germany Β· π¨π¦ Canada Β· πΊπΈ USA Β· π³π± Netherlands Β· π¬π§ UK
Introduction
The Pingrole Job Search Actor gives you programmatic access to a structured, continuously refreshed job database covering Germany, Canada, the USA, the Netherlands, and the UK. Jobs are sourced from the major public boards β LinkedIn, Indeed, and others β and enriched with company data, role classification flags, and salary metadata where available.
The Actor supports rich filtering: job title, company, location, posting date range, remote/freelance/academic/B2B/part-time flags, language, country, and pagination. Each job record includes 30+ data points: title, description, company info, salary source, job level, URL, and classification flags.
Getting Started
1 β Subscribe
Visit the Actor page on Apify and click Try for free or subscribe to a plan. No credit card is required for the free tier.
2 β Make your first run
Go to the Input tab, set your filters (e.g. country: canada, title: engineer), and click Start. When the run finishes, open the Dataset tab and export your results as JSON, CSV, Excel, or XML.
3 β Integrate via API
Use the Apify API or any of the official client libraries (Python, JavaScript, etc.) to trigger runs and fetch results programmatically. Code examples are in the sections below.
Authentication
All API calls require an Apify API token. Pass it as a query parameter:
?token=YOUR_APIFY_API_TOKEN
Or in the Authorization header:
Authorization: Bearer YOUR_APIFY_API_TOKEN
You can find your token in the Apify Console under Settings β Integrations.
Response Structure
Each Actor run writes one dataset record per job. The run result object contains:
{"ok": true,"total": 1240,"count": 10,"items": [ ...job records... ]}
| Field | Description |
|---|---|
ok | true on success |
total | Total matching jobs in the database |
count | Number of records returned in this run |
items | Array of job objects |
On error:
{"ok": false,"error": "Invalid filter value for 'language'"}
Endpoints
Actor Run (POST)
Trigger a run via the Apify API:
POST https://api.apify.com/v2/acts/{ACTOR_ID}/runs?token={YOUR_TOKEN}Content-Type: application/json
Body: a JSON object with any combination of the input parameters below.
Dataset Fetch (GET)
After a run completes, fetch results from the dataset:
GET https://api.apify.com/v2/datasets/{DATASET_ID}/items?token={YOUR_TOKEN}
Input Parameters
Set action to choose the endpoint. Default is search_jobs.
action: search_jobs (default)
All parameters are optional except those noted. Combine freely to narrow results.
| Parameter | Type | Match | Description |
|---|---|---|---|
country | string | Exact | canada, germany, netherlands, United States, or United Kingdom |
language | string | Exact | en, fr, or de |
title | string | Partial | Job title (case-insensitive regex) |
company | string | Partial | Company name |
location | string | Partial | City / region string, e.g. Toronto |
site | string | Exact | Job board, e.g. indeed, linkedin β comma-separated for multiple |
Remote | boolean | Exact | true = remote jobs only |
Academic | boolean | Exact | true = academic roles only |
Research | boolean | Exact | true = research roles only |
Freelancer | boolean | Exact | true = freelance roles only |
B2B | boolean | Exact | true = B2B contract roles only |
PartTime | boolean | Exact | true = part-time roles only |
datetime_from | string | Date β₯ | ISO date e.g. 2026-01-01 or 2026-01-01@11:00 |
datetime_to | string | Date β€ | ISO date e.g. 2026-12-31 or 2026-12-31@17:45 |
limit | integer | β | Records to return per run (1β100, default 10) |
skip | integer | β | Pagination offset (default 0) |
sort_field | string | β | datetime_from (default), title, company, site, language, country |
sort_direction | integer | β | -1 newest first (default) Β· 1 oldest first |
Note on boolean flags: Omit a flag to ignore it entirely. Set true to include only matching roles. Set false to exclude them.
action: search_companies
Returns a ranked list of companies that posted jobs, with job counts. country and limit are required.
| Parameter | Type | Required | Description |
|---|---|---|---|
country | string | Yes | canada, germany, netherlands, United States, or United Kingdom |
limit | integer | Yes | Companies to return (1β100) |
location | string | No | Partial match on job location (regex) |
datetime_from | string | No | Only count jobs posted on or after this date |
datetime_to | string | No | Only count jobs posted on or before this date |
skip | integer | No | Pagination offset (default 0) |
sort_field | string | No | count (default), company, country |
sort_direction | integer | No | -1 most jobs first (default) Β· 1 fewest first |
Output fields per company: logo_url, country, company, count.
Example Inputs
Latest 20 jobs in Canada:
{ "country": "canada", "limit": 20 }
Remote software roles in Germany (German-language):
{"country": "germany","title": "software","Remote": true,"language": "de","limit": 50}
LinkedIn jobs in Toronto, posted this month:
{"country": "canada","site": "linkedin","location": "Toronto","datetime_from": "2026-05-01@00:00","datetime_to": "2026-05-31@23:59","limit": 100}
Page 2 of results (pagination):
{"country": "canada","limit": 10,"skip": 10,"sort_field": "datetime_from","sort_direction": -1}
Top 20 hiring companies in the United States:
{"action": "search_companies","country": "United States","limit": 20}
Top hiring companies in Canada, filtered by location and date:
{"action": "search_companies","country": "canada","location": "Toronto","datetime_from": "2026-01-01","limit": 50,"sort_field": "count","sort_direction": -1}
Output Fields
Each job record includes the following fields. Missing values are returned as null.
| Field | Description |
|---|---|
id | Internal job identifier |
job_id | Source-specific job ID |
site | Job board (e.g. indeed, linkedin) |
job_url | Direct link to the listing |
title | Job title |
company | Company name |
location | Location string |
job_type | e.g. fulltime, parttime |
description | Full job description |
salary_source | Salary data source, if available |
currency | Salary currency |
job_level | Seniority level |
company_industry | Industry |
company_url | Company profile URL |
company_logo | Logo image URL |
company_url_direct | Company website |
company_addresses | Company address(es) |
company_num_employees | Employee count |
company_revenue | Revenue info |
company_description | Company description |
company_rating | Company rating |
timestamp | Scrape datetime (UTC) |
country | canada, germany, netherlands, United States, or United Kingdom |
language | en, fr, or de |
Remote | Remote flag |
Academic | Academic flag |
Research | Research flag |
Freelancer | Freelance flag |
B2B | B2B flag |
PartTime | Part-time flag |
Example Record
{"id": "li-4374072722","site": "linkedin","job_url": "https://www.linkedin.com/jobs/view/4374072722","title": "Software Engineer","company": "Example GmbH","location": "Berlin, DE","job_type": "fulltime","description": "We are looking for...","salary_source": null,"currency": null,"job_level": "mid-senior","company_industry": "Software Development","company_url": "https://linkedin.com/company/example-gmbh","company_logo": null,"company_url_direct": "https://example.com","company_addresses": null,"company_num_employees": "51-200","company_revenue": null,"company_description": "Example GmbH is a Berlin-based...","company_rating": null,"job_id": "li-4374072722","timestamp": "2026-05-16 14:50:09.053000","country": "germany","language": "de","Academic": false,"Research": false,"Remote": true,"Freelancer": false,"B2B": false,"PartTime": false}
Code Examples
Python
import jsonfrom apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_API_TOKEN")run = client.actor("YOUR_ACTOR_ID").call(run_input={"country": "canada","title": "software engineer","Remote": True,"datetime_from": "2026-01-01@11:00","datetime_to": "2026-12-31@17:45","limit": 25,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsfor job in items:print(json.dumps(job, indent=4, ensure_ascii=False, default=str))
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_API_TOKEN' });const run = await client.actor('YOUR_ACTOR_ID').call({country: 'germany',title: 'data engineer',Remote: true,limit: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach(job => console.log(job.title, job.company));
curl
curl -X POST \"https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs?token=YOUR_APIFY_API_TOKEN" \-H "Content-Type: application/json" \-d '{"country": "canada", "title": "engineer", "Remote": true, "limit": 20}'
Then retrieve results:
$curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_APIFY_API_TOKEN&format=json"
Common Use Cases
- Job board apps β Power a job search UI with filtered, structured listings
- Lead generation β Find companies actively hiring in a specific role or location
- Recruitment tools β Feed filtered listings into your ATS, CRM, or Slack
- Market research β Compare job volume by title, region, or date range
- Salary benchmarking β Aggregate job-level and salary data across boards
- Analytics pipelines β Schedule daily runs and export to CSV / BigQuery / Sheets
- Competitive intelligence β Track hiring trends by company or job board
Scheduling & Integrations
- Schedule runs in the Apify Console (e.g. daily at 08:00 UTC) to keep a dataset continuously fresh.
- Webhooks β trigger your downstream app or pipeline the moment a run succeeds.
- Apify integrations β connect directly to Google Sheets, Slack, Zapier, Make, Airtable, and more from the Actor run page.
Rate Limiting & Limits
- Each run returns up to 100 records per call (set via
limit). - Use
skip+limitacross multiple runs to paginate through large result sets. - Apify enforces platform-level rate limits based on your subscription plan. See Apify pricing for details.
Error Handling
| HTTP Status | Meaning | Action |
|---|---|---|
400 Bad Request | Malformed input or invalid parameter value | Check input types and allowed values |
401 Unauthorized | Missing or invalid API token | Verify your token in Apify Console |
429 Too Many Requests | Rate limit exceeded | Wait for reset or upgrade your plan |
500 Server Error | Unexpected server error | Retry after a short delay; contact support if it persists |
All actor-level errors are surfaced in the Log tab of your run in the Apify Console.
Live Dashboard
Explore the data interactively before integrating: realtime.pingrole.com
Support & Contact
Built by Hermann Samimi Β· Pingrole
For issues with a run, check the Log tab in the Apify Console. For feature requests, data coverage questions, or custom plans:
- Email: hermannsamimi@gmail.com
- Book a call: calendly.com/hermannsamimi/30min