FlexJobs Scraper
Pricing
Pay per usage
FlexJobs Scraper
Scrape Flexjobs remote job listings instantly. Extract job titles, salaries, descriptions, requirements, and company info for job board aggregation, career research, and workforce analytics. Get flexible work opportunities data at scale.
Pricing
Pay per usage
Rating
5.0
(3)
Developer
Shahid Irfan
Maintained by CommunityActor stats
1
Bookmarked
54
Total users
11
Monthly active users
3 days ago
Last modified
Categories
Share
What does FlexJobs Remote Jobs Scraper do?
FlexJobs Remote Jobs Scraper collects remote and flexible job listings from public FlexJobs listing pages. Provide one or more FlexJobs category or search URLs, choose the maximum number of jobs and pages to visit, and receive a structured dataset with job titles, companies, locations, remote classifications, schedules, salary signals, descriptions, dates, and application links.
The dataset is useful for remote hiring research, job-board aggregation, recruiting workflows, compensation analysis, workforce monitoring, and recurring job-market snapshots. Results are saved as individual job records and can be downloaded in the standard Apify dataset formats.
Why use FlexJobs Remote Jobs Scraper?
- Structured remote job data - Collect role, employer, location, schedule, compensation, category, and posting information in consistent fields.
- Multiple listing sources - Start with several FlexJobs listing URLs in one run, including broad remote-job pages and category-specific pages.
- Controlled collection size - Use
results_wantedto set the maximum number of jobs andmaxPagesPerListto limit page depth for each starting URL. - Cleaner datasets - Duplicate jobs are skipped when the same listing appears on overlapping categories or pages.
- Useful source links - Each normal record includes a public FlexJobs job URL and an application URL when FlexJobs provides one.
- Automation-ready output - Download JSON, CSV, Excel, or XML, or connect the dataset to Apify workflows such as schedules, webhooks, and downstream integrations.
What data can you extract from FlexJobs?
The actor writes one dataset item per accepted public job listing. The dataset view highlights title, company, location, salary, job_type, date_posted, and url. Additional fields are available when the source listing provides them.
| Field | Type | Description |
|---|---|---|
source | String | Source identifier, normally flexjobs. |
url | String | Public FlexJobs job detail URL. |
title | String | Job title. |
company | String | Employer name. |
company_id | String | Company identifier when available. |
company_slug | String | Company slug when available. |
company_logo | String | Company logo URL when available. |
location | String | Primary location text. |
job_locations | Array | Locations associated with the job. |
allowed_candidate_locations | Array | Locations from which candidates may apply when provided. |
states | Array | State values supplied by the listing. |
countries | Array | Country values supplied by the listing. |
cities | Array | City values supplied by the listing. |
remote_options | Array | Remote or workplace options from the listing. |
remote_level | String | Primary remote classification. |
job_types | Array | Job type values supplied by the listing. |
job_type | String | Primary job type or employment type. |
job_schedules | Array | Schedule values supplied by the listing. |
schedule | String | Primary schedule, such as full-time, when available. |
salary | String | Original salary or compensation text when available. |
salary_min | Number | Minimum numeric salary value when available. |
salary_max | Number | Maximum numeric salary value when available. |
salary_unit | String | Salary period or unit when available. |
salary_currency | String | Salary currency value when available. |
career_level | String, Array, or Object | Career or seniority information when supplied. |
category | String | Primary job category. |
categories | Array | General category labels. |
job_categories | Array | Job-specific category labels. |
tags | Array | Listing tags when available. |
education_levels | Array | Education-level requirements when available. |
description_text | String | Best available plain-text job description or summary. |
description_source | String | Indicates whether the description came from the listing summary or a detail-page enrichment attempt. |
job_summary | String | Job summary when available. |
date_posted | String | Normalized posting date or timestamp. |
created_on | String | Creation timestamp when available. |
valid_through | String | Expiration timestamp when available. |
job_id | String | Job identifier. |
slug | String | Job slug when available. |
apply_url | String | Employer or application URL when available. |
travel_required | String | Travel requirement text when available. |
coordinates | Object | Latitude and longitude when supplied. |
is_flexible_schedule | Boolean | Whether the listing indicates a flexible schedule. |
is_telecommute | Boolean | Whether the listing indicates telecommuting. |
is_freelancing_contract | Boolean | Whether the listing indicates freelance or contract work. |
featured | Boolean | Featured-listing flag when supplied. |
is_free_job | Boolean | Free-job flag when supplied. |
hosted | Boolean | Hosted-listing flag when supplied. |
track_properties | Object | Additional source tracking metadata when available. |
scraped_at | String | ISO timestamp for when the record was collected. |
Supported input methods
You can configure the actor in the Apify Console input form or send the same JSON object through an Apify run or automation workflow. The actor accepts a list of FlexJobs listing URLs. It does not accept a keyword, location, salary, date, or employment-type filter as a separate input field. Use the relevant FlexJobs listing or category URL to define the collection scope.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | Array of strings | No | https://www.flexjobs.com/remote-jobs and https://www.flexjobs.com/remote-jobs/legitimate-work-from-home-jobs-hiring-now | FlexJobs listing URLs to use as starting points. Multiple URLs can be supplied in one run. |
results_wanted | Integer | No | 20 | Maximum number of job records to save. Minimum accepted value is 1. |
maxPagesPerList | Integer | No | 25 | Maximum number of pages to visit for each starting URL. Minimum accepted value is 1. |
proxyConfiguration | Object | No | { "useApifyProxy": false } | Optional Apify proxy settings for request routing and reliability. |
Start URLs should be public FlexJobs listing pages, such as /remote-jobs or a category beneath /remote-jobs/. The actor may discover additional FlexJobs listing and pagination URLs from those pages, subject to the page limit and result limit.
How to use FlexJobs Remote Jobs Scraper
- Open the actor in Apify Console.
- Add one or more public FlexJobs listing URLs to
startUrls. - Set
results_wantedfor the desired dataset size. - Adjust
maxPagesPerListif the starting pages contain more results than one page. - Enable an Apify proxy configuration when your run needs proxy routing.
- Start the run and review the dataset preview.
- Download the results or connect the dataset to your job research, reporting, or automation workflow.
Usage Examples
Basic remote jobs collection
Collect up to 20 jobs from the main FlexJobs remote jobs listing.
{"startUrls": ["https://www.flexjobs.com/remote-jobs"],"results_wanted": 20}
Multiple job categories
Collect jobs from two FlexJobs category pages in the same run, with duplicate records removed.
{"startUrls": ["https://www.flexjobs.com/remote-jobs/computer-it","https://www.flexjobs.com/remote-jobs/customer-service-call-center"],"results_wanted": 80,"maxPagesPerList": 20}
Larger run with Apify Proxy
Use a larger result and page limit while enabling the optional proxy configuration.
{"startUrls": ["https://www.flexjobs.com/remote-jobs"],"results_wanted": 100,"maxPagesPerList": 25,"proxyConfiguration": {"useApifyProxy": true}}
Sample Output
The following is a representative single dataset item. Fields that are unavailable on a source listing are omitted from that item.
{"source": "flexjobs","url": "https://www.flexjobs.com/publicjobs/director-marketing-ai-transformation-3420c1ce-1f38-4f77-acd5-9a8a47a469be","title": "Director, Marketing AI Transformation","company": "Dynatrace","company_id": "1343","location": "US National","remote_level": "100% Remote Work","job_type": "Employee","schedule": "Full-Time","salary": "166,000.00 - 210,000.00 USD Annually","category": "Computer & IT","description_text": "Lead the Marketing AI roadmap and investment priorities, including quarterly planning and use case prioritization...","description_source": "listing_summary","date_posted": "2026-03-26T05:12:35.000Z","job_id": "3420c1ce-1f38-4f77-acd5-9a8a47a469be","apply_url": "https://www.dynatrace.com/careers/jobs/1375016100/","scraped_at": "2026-03-26T08:41:49.447Z"}
Data-quality behavior and limitations
- Empty values are omitted - The actor normalizes whitespace and removes empty or null fields from saved records. A missing field generally means the source did not provide a usable value for that listing.
- Public listings only - The actor is intended for public FlexJobs listing and job-detail URLs. It does not accept login credentials or collect private account content.
- Descriptions may be summaries - Some FlexJobs jobs expose only a short or restricted description. The actor keeps the best available text and records its origin in
description_source. A detail-page enrichment attempt may replace a short listing summary when fuller public text is available. - Salary is source-dependent -
salary,salary_min,salary_max,salary_unit, andsalary_currencyare populated only when the listing provides compensation information. Salary values are not estimated. - Page and result limits apply - The actor stops when it reaches
results_wanted, the calculated page limit, or the available listing queue. A large limit does not guarantee that many records if the supplied pages contain fewer accepted jobs. - Only valid public job URLs are saved - Records without a usable
/publicjobs/URL are discarded. A limited fallback record may contain only the source, title, URL, and collection timestamp when richer listing data is unavailable. - Source pages can change - FlexJobs may change listing content, availability, or page structure. Review a small run first and report recurring extraction problems through the actor's Issues tab.
Tips for best results
- Use broad
/remote-jobspages for wider market coverage and category URLs for a narrower dataset. - Start with
results_wanted: 20and increase it after checking the dataset preview. - Use multiple non-overlapping category URLs when you need to compare specific job areas.
- Keep
maxPagesPerListhigh enough to reach the requested result count, but use a smaller value for quick tests. - Compare
description_sourceand the presence of salary fields before using the data for benchmarking. - Use the same URLs and limits in scheduled runs when building comparable hiring or labor-market snapshots.
Integrations and export formats
Apify datasets can be downloaded or connected to common workflow tools:
- JSON - Use structured job records in applications, scripts, and data pipelines.
- CSV - Analyze titles, companies, locations, and salary fields in spreadsheet tools.
- Excel - Share job-market reports with business and recruiting teams.
- XML - Pass records to systems that require XML exports.
- Google Sheets, Airtable, Make, or Zapier - Route dataset records into research, reporting, notifications, or enrichment workflows.
- Webhooks and schedules - Trigger downstream actions or repeat collection from Apify according to your workflow.
Frequently Asked Questions
Can I filter jobs by keyword or location?
No. The actor does not have separate keyword or location inputs. Start with a FlexJobs URL whose listing scope matches your target category or use the returned fields for filtering after collection.
Can I provide more than one FlexJobs URL?
Yes. Add multiple listing URLs to the startUrls array. The actor can follow discovered listing pages and skips duplicate jobs found across overlapping sources.
Why is a description shorter than expected?
Some public FlexJobs listings expose only summary text or restricted details. The actor saves the best available public description and identifies whether it came from the listing summary or a detail-page enrichment attempt.
Are salary values complete for every job?
No. Salary data is included only when FlexJobs publishes it. Missing salary fields should be treated as unavailable source data, not as a zero salary.
Can I schedule recurring runs?
Yes. Apify scheduling can run the actor repeatedly with the same input so you can compare job-market snapshots over time.
Can I export the dataset to CSV or Excel?
Yes. Apify supports dataset exports including JSON, CSV, Excel, and XML, subject to the formats available for the dataset view.
Is it legal to collect FlexJobs data?
You are responsible for complying with FlexJobs terms, applicable laws, privacy requirements, and any restrictions that apply to your intended use. Collect and use public job data responsibly.
Related Actors
- RemoteOk Job Scraper - Collect remote job listings from RemoteOK for comparison with FlexJobs data.
- WeWorkRemotely Jobs Scraper - Collect remote job listings from WeWorkRemotely for broader remote-work research.
- USA Jobs Scraper - Collect public USAJobs listings for federal hiring and workforce analysis.
Support
For issues or feature requests, use the actor's Issues tab and include the input URL, settings, and a description of the unexpected output.
Legal Notice
This actor is intended for legitimate collection and analysis of publicly available job information. You are responsible for complying with FlexJobs terms, applicable laws, privacy rules, and responsible data-use requirements.