FlexJobs Jobs Scraper avatar

FlexJobs Jobs Scraper

Pricing

from $0.79 / 1,000 job scrapeds

Go to Apify Store
FlexJobs Jobs Scraper

FlexJobs Jobs Scraper

Scrape remote and flexible job listings from FlexJobs by keyword, location, and country. Get job title, location, salary, schedule, remote type, posting date, and apply URL. Export as JSON, CSV, or Excel.

Pricing

from $0.79 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

FlexJobs Jobs Scraper

Scrape remote and flexible job listings from FlexJobs — the curated job board for remote, hybrid, freelance, and part-time work — into clean, structured JSON. The FlexJobs Jobs Scraper searches by keyword, location, and country and pulls the job title, location, salary range, schedule, remote type, career level, benefits, categories, posting date, and a direct link to each listing, without a FlexJobs login or the FlexJobs API.

Search any keyword across any location, filter by job type, employer, and posting date, then walk as many result pages as you need — 50 jobs per page — and get 25+ structured fields per listing ready for analysis, monitoring, or integration.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

Actor: parsebird/flexjobs-jobs-scraper (Apify). Scrapes remote/flexible job listings from flexjobs.com by keyword, location, and country. Call with ApifyClient.
Input JSON fields: includeKeyword: string (required) — job title/skill/search term, e.g. "software engineer, python" (commas = OR); locationName: string — city/state/region, e.g. "New York, NY"; countryName: string (default "all")"usa", "uk", "india", "all", or any country name; pagesToFetch: int (default 1) — result pages to walk, 50 jobs each; companyName: string — restrict to one employer (note: FlexJobs hides employer names from non-members); jobType: "FULLTIME" | "PARTTIME" | "CONTRACTOR" | "INTERN"; datePosted: "all" | "today" | "3days" | "week" | "month"; proxyConfiguration: object — UNBLOCKER proxy group is required and set by default.
Output: one dataset item per job — job_title, company_name, location, posted_via, salary, date, job_type, URL, job_id, slug, description, remote_option, is_fully_remote, schedule, employment_category, career_level, education_levels, job_benefits, categories, salary_min, salary_max, salary_currency, salary_period, allowed_candidate_locations, travel_required, posted_at, expire_at, scraped_at.
Example: { "includeKeyword": "software engineer, python", "locationName": "new york", "countryName": "usa", "jobType": "FULLTIME", "datePosted": "week", "pagesToFetch": 3 }
API: https://api.apify.com/v2/acts/parsebird~flexjobs-jobs-scraper · Token: https://console.apify.com/account/integrations

What does FlexJobs Jobs Scraper do?

FlexJobs hand-screens listings for remote, hybrid, freelance, and part-time roles across 50+ career categories. There is no public FlexJobs API — this scraper reads the site's own job-search results instead, so you get the same jobs you would see on flexjobs.com, as structured data. For every keyword, location, and country combination it extracts:

  • 🏷️ Job identity — title, location(s), remote type (100% remote, hybrid, or option for remote), and a direct flexjobs.com/publicjobs/... link.
  • 💰 Pay and terms — salary range as shown on the site, plus parsed salary_min / salary_max / currency / period, schedule (full-time, part-time, flexible), employment category (employee vs. freelance), and career level.
  • 📋 Context — a short role summary, listed benefits, education requirements, travel requirement, and the FlexJobs categories the job is filed under.
  • 📅 Dates — when the job was posted and when the listing expires.

The scraper accepts the same inputs as a normal FlexJobs search — keyword, location, country, job type, employer, and "date posted" window — and paginates automatically, 50 jobs per page.

Note on employer names: FlexJobs shows the hiring company only to logged-in members. For public search results the company_name field is usually empty. Every other field (title, salary, location, schedule, remote type, link) is available.

What data can you extract from FlexJobs?

FieldDescription
job_titleRole title as published on FlexJobs
company_nameEmployer name (usually empty — FlexJobs hides this from non-members)
locationCity / state / region, or Remote / US National where stated
posted_viaAlways FlexJobs
salaryPay range string exactly as shown, e.g. 120,000.00 - 150,000.00 USD Annually
salary_min / salary_maxNumeric salary bounds parsed from the range
salary_currency / salary_periode.g. USD, yearly / hourly
datePosting date (YYYY-MM-DD)
job_typeFull-time, Part-time, or Contract, when stated
scheduleRaw FlexJobs schedule label(s)
remote_option100% Remote Work, Hybrid Remote Work, or Option for Remote Work
career_levelEntry-Level, Experienced, Manager, etc.
job_benefitsList of benefits mentioned in the listing
categoriesFlexJobs career categories the job is filed under
education_levelsEducation requirements, when stated
URLDirect link to the public job listing
job_id / slugStable identifiers for deduplication and monitoring
posted_at / expire_atFull ISO timestamps

Not every FlexJobs listing includes every field — salary, exact date, and job type vary by posting — so handle optional fields gracefully in your integration.

Input parameters

ParameterTypeRequiredDefaultDescription
includeKeywordstringYesJob title, skill, or search term. Comma-separated values are supported (React, Node.js).
locationNamestringNoCity, state, or region, e.g. New York, NY or London.
countryNamestringNoallCountry context: usa, uk, india, all, or any country name.
pagesToFetchintegerNo1Number of result pages to walk (50 jobs per page).
companyNamestringNoRestrict to a single employer, e.g. Dell.
jobTypestringNoFULLTIME, PARTTIME, CONTRACTOR, or INTERN.
datePostedstringNoallall, today, 3days, week, or month.
proxyConfigurationobjectNoUNBLOCKERApify Proxy settings. FlexJobs blocks datacenter and residential proxies; the UNBLOCKER group is required and set by default.

Example input

{
"includeKeyword": "software engineer, python",
"locationName": "new york",
"countryName": "usa",
"companyName": "Dell",
"jobType": "FULLTIME",
"datePosted": "week",
"pagesToFetch": 3
}

Output example

[
{
"job_title": "Senior Frontend Developer",
"company_name": "",
"location": "New York, NY",
"posted_via": "FlexJobs",
"salary": "120,000.00 - 150,000.00 USD Annually",
"salary_min": 120000.0,
"salary_max": 150000.0,
"salary_currency": "USD",
"salary_period": "yearly",
"date": "2026-03-25",
"job_type": "Full-time",
"schedule": "Full-Time",
"remote_option": "Hybrid Remote Work",
"career_level": "Experienced",
"job_benefits": ["Health Insurance", "401k Matching/Retirement Savings", "Paid Vacation"],
"categories": ["Computer & IT", "Software Development"],
"education_levels": ["Bachelor's/Undergraduate Degree"],
"URL": "https://www.flexjobs.com/publicjobs/senior-frontend-developer-1a2b3c4d",
"job_id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"posted_at": "2026-03-25T14:02:11Z",
"expire_at": "2026-05-01T00:00:00Z",
"scraped_at": "2026-03-26T09:00:00Z"
}
]

Download the dataset as JSON, CSV, Excel, XML, or HTML from the Storage tab or the Apify API.

How to scrape FlexJobs

  1. Open the Input tab of the FlexJobs Jobs Scraper.
  2. Enter a search keyword — a job title or skill such as Product Manager or data analyst.
  3. Optionally set a location (New York, NY), a country (usa), a job type, an employer, and a "date posted" window.
  4. Set Pages to fetch — start with 1–3 pages (50 jobs each) to keep the first run fast and cheap.
  5. Click Start. Results stream into the dataset as they are scraped.
  6. Export from the Storage tab, or pull the data via API, or connect an integration (Google Sheets, Slack, Zapier, Make, webhooks).

To run FlexJobs scraping on a schedule (daily, hourly, weekly), use Apify's Schedules feature and point it at this actor.

How much does it cost to scrape FlexJobs?

This actor uses pay-per-result pricing:

PlanPrice per 1,000 jobs
Free$0.99
Bronze$0.89
Silver$0.89
Gold$0.79

One event is charged per job saved to the dataset. Scraping 3 pages (~150 jobs) costs about $0.15 on the Free plan. Your Apify platform usage (compute + proxy) is billed separately according to your plan; the UNBLOCKER proxy required for FlexJobs is the main platform cost, so keep pagesToFetch to what you actually need.

Use cases

  • 📊 Remote job-market research — track how many remote/hybrid roles exist for a skill, and how pay ranges shift over time.
  • 🧭 Recruiting and sourcing — monitor new listings in a category and location every day.
  • 💵 Salary benchmarking — aggregate salary_min / salary_max by role, seniority, and remote type.
  • 🔁 Job-board aggregation — feed FlexJobs listings into your own job search product alongside other sources.
  • 🔔 Alerting — schedule the actor with datePosted: "today" and push new jobs to Slack or email.

How it works

  1. The actor loads a FlexJobs search results page for your keyword, location, and country through Apify's UNBLOCKER proxy (FlexJobs is protected by Akamai Bot Manager).
  2. It reads the listing data embedded in the page and maps each job to a structured record.
  3. It follows pagination up to pagesToFetch, deduplicating jobs by ID across pages.
  4. datePosted and jobType are applied as filters; jobs outside the window or type are skipped.
  5. Each job is pushed to the dataset and one job-scraped event is charged.

FAQ

Do I need a FlexJobs account or subscription? No. The scraper reads public FlexJobs search results. A FlexJobs membership is only needed to see employer names and apply directly on flexjobs.com.

Why is company_name empty? FlexJobs deliberately hides the hiring company from non-members on public search results. The scraper returns every other field. If you need the employer, open the job URL while logged in to FlexJobs.

How many jobs can I get per search? FlexJobs returns 50 jobs per page and often hundreds of pages per query. Set pagesToFetch to control how deep to go.

Can I filter by "posted today" or "this week"? Yes — use datePosted (today, 3days, week, month). Jobs older than the window are skipped.

Can I scrape a specific FlexJobs category or remote level? Use a keyword that matches the category (e.g. accounting, customer service) plus the jobType filter. Remote level is returned in remote_option for every job.

Can I run this on a schedule? Yes. Use Apify Schedules for recurring runs, and integrations or webhooks to route new jobs into your tools.

Something looks wrong or a field is missing. Open an issue on the Issues tab with your input and the run ID — happy to fix it.

Scraping publicly available data is legal in most jurisdictions, and this actor only reads pages that any visitor can load without logging in. It does not bypass authentication and does not collect personal data about individuals. You are responsible for how you use the scraped data — review FlexJobs' Terms of Use and consult Apify's guide on the legality of web scraping before large-scale or commercial use.

Browse all ParseBird actors for more job boards and data sources.