Workable Job Scraper π₯
Pricing
from $1.00 / 1,000 results
Workable Job Scraper π₯
Effortlessly scrape job listings from Workable. This actor is designed for simplicity, providing a minimal, clean dataset with just the core job details. Perfect for quick data collection and lead generation without the extra noise.
Pricing
from $1.00 / 1,000 results
Rating
5.0
(6)
Developer
Shahid Irfan
Maintained by CommunityActor stats
4
Bookmarked
46
Total users
13
Monthly active users
14 hours
Issues response
14 days ago
Last modified
Categories
Share
Workable Jobs Scraper
Extract structured job listings from Workable career pages with full field coverage for recruiting intelligence, market research, and job board operations. Collect clean, analysis-ready records including company profiles, location hierarchies, employment types, posting metadata, and complete job descriptions at any scale.
Features
- Rich Job Records - Collect 25+ fields per listing including title, company, location, employment type, workplace mode, description, requirements, and benefits.
- Flexible Input Modes - Start from search keywords, location queries, direct job URLs, or list API links. The scraper adapts to your data source.
- Smart Pagination - Automatically follows pagination through the Workable job listings API to reach your target result count without manual page cycling.
- Location Breakdown - Get full location text plus granular city, subregion, and country fields for geographic analysis and filtering.
- Auto-Healing Queries - If a search returns nothing, the scraper generates relaxed variants to maximize data recovery.
- Date Filtering - Narrow results by posting date with filters for 24 hours, 7 days, or 30 days.
Use Cases
Recruitment Intelligence
Track active hiring by role type, geography, and work arrangement. Identify which companies are growing teams and where talent demand is concentrated.
Job Board Operations
Populate internal or external job catalogs with consistently structured records. Maintain fresh datasets with scheduled recurring runs.
Market Research
Analyze hiring demand patterns across industries and regions. Monitor salary trends, required skills, and employer branding signals over time.
Competitive Monitoring
Track competitors' role mix, expansion signals, and hiring velocity. Get early visibility into strategic priorities through job posting patterns.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | Array | No | [] | Workable search, list API, or detail page URLs to start from. |
keyword | String | No | "software" | Search keyword or query term for role matching. |
location | String | No | "United States" | Geographic filter for job discovery. |
posted_date | String | No | "anytime" | Date filter: anytime, 24h, 7d, or 30d. |
results_wanted | Integer | No | 20 | Maximum number of job records to collect. |
proxyConfiguration | Object | No | {"useApifyProxy": false} | Proxy settings for high-volume or regional access. |
Input priority: Runtime input always takes precedence. If runtime input is empty, the scraper falls back to INPUT.json. When startUrls is provided, keyword and location filters are used only for query seeding.
Output Data
Each dataset item contains the following fields:
| Field | Type | Description |
|---|---|---|
id | String | Unique job identifier. |
title | String | Job title. |
state | String | Publication state. |
language | String | Job language code. |
date_posted | String | Job posting date (ISO 8601). |
date_updated | String | Last update timestamp. |
url | String | Direct job page URL. |
linkout_url | String | External application URL. |
company_id | String | Company identifier. |
company_title | String | Company name. |
company_website | String | Company website URL. |
company_url | String | Company profile URL on Workable. |
company_image | String | Company logo image URL. |
location | String | Full location text. |
location_city | String | City component. |
location_subregion | String | State or region component. |
location_country | String | Country component. |
locations | Array | Multi-location entries when available. |
employment_type | String | Employment type value. |
job_types | Array | Normalized list of job types. |
workplace_type | String | Workplace mode (remote, hybrid, on-site). |
is_featured | Boolean | Featured listing indicator. |
social_sharing_description | String | Social summary text. |
description_text | String | Clean job description text. |
description_html | String | Sanitized HTML with safe tags. |
requirements | String | Requirements section text. |
benefits | String | Benefits section text. |
source_list_url | String | Source listing URL. |
source_query_keyword | String | Keyword used for this run. |
source_query_location | String | Location used for this run. |
Usage Examples
Basic Keyword Search
Search for software engineering roles in the United States:
{"keyword": "software engineer","location": "United States","results_wanted": 20}
Recent Remote Roles
Collect recently posted remote positions:
{"keyword": "product manager","location": "remote","posted_date": "7d","results_wanted": 40}
Start from a Known URL
Begin extraction from a specific Workable search or detail page:
{"startUrls": ["https://jobs.workable.com/search?location=remote&q=analyst"],"results_wanted": 30}
Single Detail URL
Extract a specific job posting by its detail page:
{"startUrls": ["https://jobs.workable.com/view/example-job-id"],"results_wanted": 1}
Sample Output
{"id": "3c9c3f80-35d5-4542-a844-b2909e2293a3","title": "Senior Product Analyst","state": "published","language": "en","date_posted": "2026-02-24T14:10:11.000Z","date_updated": "2026-02-27T09:21:06.000Z","url": "https://jobs.workable.com/view/8u6AStSBRuP274KPyJMkiV/...","company_id": "3fe7a205-8b5f-45e0-a2ef-7d15f2f3e0d1","company_title": "Example Labs","company_website": "https://examplelabs.com","company_url": "https://jobs.workable.com/company/example-labs","location": "Boston, MA, United States","location_city": "Boston","location_subregion": "MA","location_country": "United States","employment_type": "FULL_TIME","job_types": ["FULL_TIME"],"workplace_type": "hybrid","is_featured": false,"description_text": "We are looking for a Senior Product Analyst to join our analytics team...","requirements": "3+ years of analytics experience...","benefits": "Health insurance, 401(k), learning budget..."}
Tips for Best Results
Start with Specific Keywords
Role-specific keywords return more relevant results. Start with results_wanted: 20 for quick validation before scaling up.
Combine Filters for Precision
Pair keyword with location and posted_date to narrow results to the most relevant and recent listings.
Enable Proxies for Volume
For high-frequency or large-scale runs, enable proxy support to improve reliability and regional access.
Integrations
Connect your job data with:
- Google Sheets - Share and analyze job listings with your team.
- Airtable - Build searchable hiring intelligence databases.
- Make - Automate enrichment, notification, and routing workflows.
- Zapier - Trigger downstream actions from fresh job records.
- Webhooks - Send output directly to your custom services.
- Slack - Get notified when new matching jobs are collected.
Export Formats
- JSON - For backend systems and data pipelines.
- CSV - For spreadsheet analysis and reporting.
- Excel - For business reporting and presentations.
Frequently Asked Questions
How many jobs can I collect?
Set results_wanted to your target. Start with 20 for testing and increase for production use.
Can I scrape from a specific company page?
Yes. Add company Workable URLs to the startUrls array, or use company search on Workable to find their listings.
What if a search returns nothing?
The scraper auto-generates relaxed query variants by removing date, location, or keyword filters to recover data.
Does it support remote and hybrid filtering?
Yes. Use location: "remote" or pair with keywords for precise workplace type matching.
Can I schedule recurring runs?
Yes. Use Apify schedules to run daily or weekly for an up-to-date dataset.
What if some fields are empty?
Some employers do not publish every field. Empty values are expected for optional fields.
How are duplicates handled?
The scraper uses job ID, URL, slug, and title-company-date fallbacks to detect and skip duplicates.
Can I use my own proxy?
Yes. Configure custom proxy URLs through the proxyConfiguration parameter. Both Apify proxy and custom lists are supported.
Support
For issues, feature requests, or questions, contact support through the Apify Console.
Resources
Legal Notice
This actor is designed for legitimate data collection purposes. Users are responsible for ensuring compliance with Workable's terms of service and applicable data protection laws. Use extracted data responsibly and respect rate limits.