
Google Ads Scraper
scrape.ly/store/querystone/google-ads-scraperLead generationSEO tools
4 monthly users

Scrape remote, hybrid and flexible job listings from FlexJobs.com by keyword, location and category with the site's filters (remote level, job type, schedule, career level, salary, education), or from search, category, company and job URLs. Get title, location, salary, benefits, categories, summary and dates.
Scrape remote, hybrid and flexible job listings from FlexJobs.com by keyword, location, category or any FlexJobs URL. Every job comes back with its title, location, remote level, schedule, salary, benefits, categories, summary and dates, at about 1,000 jobs in 15 seconds. No login and no FlexJobs membership needed.
data analyst), and optionally a location such as New York, NY, Canada or Work from Anywhere.| Field | What it does |
|---|---|
searchKeywords | Job titles, skills or company names; each one is a FlexJobs search. |
location | Where candidates must be, as FlexJobs writes it: New York, NY, California, Canada, Work from Anywhere. |
startUrls | FlexJobs search, category, category + location, company, remote-jobs or job URLs. |
maxItems | Maximum jobs for the whole run (default 20, 0 = no limit). |
categories, remoteOptions, jobTypes, schedules, careerLevels, educationLevels, travel, salaryRanges, accolades | FlexJobs' own filters; within one filter any value matches. |
excludeWords | Leave out jobs containing these words. |
postedWithinDays | Only jobs posted in the last N days (older jobs are not charged). |
sortBy | newest (default, reads every page exactly once) or relevance. |
{
"searchKeywords": ["data analyst", "customer service"],
"location": "United States",
"remoteOptions": ["fully-remote"],
"schedules": ["part-time"],
"postedWithinDays": 7,
"maxItems": 200
}
One row per job.
| Field | Example |
|---|---|
title | Senior Manager, Enterprise Sales |
company, company_url, company_logo | Filled on company pages and on the jobs the remote-jobs page showcases (see Limits) |
location, job_locations, allowed_candidate_locations, cities, states, countries | US National |
remote_level, remote_options | 100% Remote Work |
job_type, schedule, career_level, education_levels, travel_required | Employee, Full-Time, Manager |
salary, salary_min, salary_max, salary_currency, salary_unit | 137,000.00 - 205,600.00 USD Annually |
benefits, accolades | Health/Medical Insurance, Fortune 500 |
category, categories, category_slugs | Banking, Sales |
description_text | The job summary FlexJobs shows publicly |
date_posted, valid_through | 2026-10-21T19:04:19Z |
apply_url | Employer's own application link, when FlexJobs shows it publicly |
url, job_id, slug | FlexJobs job page and id |
search_query, source_url, position | Which search or URL found the job, and where |
A real row from a test run (trimmed):
{
"job_id": "f5ce734d-c016-4aaf-9d0d-44a03fe60ecd",
"title": "Senior Manager, Enterprise Sales",
"url": "https://www.flexjobs.com/publicjobs/senior-manager-enterprise-sales-f5ce734d-c016-4aaf-9d0d-44a03fe60ecd",
"company": "DXC Technology",
"company_url": "https://www.flexjobs.com/remote-jobs/company/dxc_technology",
"location": "US National",
"remote_level": "100% Remote Work",
"job_type": "Employee",
"schedule": "Full-Time",
"career_level": ["Manager"],
"category": "Banking",
"categories": ["Banking", "Business Development", "Consulting", "IT Consulting", "Insurance", "Sales"],
"education_levels": ["Bachelor's/Undergraduate Degree"],
"travel_required": "Yes",
"salary": "137,000.00 - 205,600.00 USD Annually",
"salary_min": 137000,
"salary_max": 205600,
"salary_currency": "USD",
"salary_unit": "Annually",
"benefits": ["Health/Medical Insurance", "Dental Insurance", "401k Matching/Retirement Savings", "Paid Vacation"],
"accolades": ["Fortune 500", "Forbes 2000", "FlexJobs Top 100 Remote"],
"description_text": "Drive new business growth by originating and closing complex consulting and engineering services opportunities in Financial Services, while managing a self-generated pipeline and engaging with senior executives to identify transformation needs.",
"date_posted": "2026-10-21T19:04:19Z",
"valid_through": "2026-12-15T00:00:00Z",
"apply_url": "https://dxctechnology.wd1.myworkdayjobs.com/DXCJobs/job/USA---NY---ANY-CITY/Sr-Manager-Enterprise-Sales-CES---FSI---UNITED-STATES_51589140",
"source_url": "https://www.flexjobs.com/remote-jobs",
"scraped_at": "2026-10-21T22:43:58.484Z"
}
You pay $0.75 per 1,000 jobs saved ($0.00075 per job), plus a small platform usage fee for compute and proxy traffic.
Is it legal to scrape FlexJobs? The scraper reads only the public job listings FlexJobs shows to every visitor without an account. Check FlexJobs' terms and the laws that apply to you before using the data.
Do I need a FlexJobs login, membership or my own proxy? No. The run uses datacenter proxies by default and switches to US residential proxies by itself if FlexJobs starts refusing requests.
How many jobs can I get?
As many as FlexJobs lists for your search: about 130,000 open jobs in total. Set maxItems to 0 for every match.
Why is the company name empty on most jobs?
FlexJobs hides company names, apply links and full descriptions from logged-out visitors on search and category pages and shows them only to paying members. They are public on company pages (/remote-jobs/company/<name>) and on the jobs showcased on the remote-jobs page, and the scraper fills them there.
Can I schedule it or use the API?
Yes. Save the input as a task, schedule it (for example daily with postedWithinDays: 1) and read the dataset through the API or an integration.
What if a field is empty? The job does not have that information on FlexJobs (many jobs have no salary or city, for example). Fields are never guessed.
description_text is the summary FlexJobs shows publicly; the full description is members-only.sortBy: relevance FlexJobs repeats some jobs across pages, so very large relevance runs can end with fewer jobs than the site's count; use the default newest-first order for complete runs.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchKeywordsarrayOptionalSearch keywords
Job titles, skills or company names, one per line, e.g. data analyst, customer service, python, writer. Each keyword is a separate FlexJobs search. Leave empty to list every job that matches the location and filters.
locationstringOptionalLocation
Where the job must be open to candidates, as FlexJobs writes it: a city and state (New York, NY), a state (California), a country (Canada, United Kingdom, India) or Work from Anywhere. Leave empty for every location.
startUrlsarrayOptionalFlexJobs URLs
FlexJobs pages copied from your browser: search results (https://www.flexjobs.com/search?searchkeyword=writer, filters in the URL are kept), categories (https://www.flexjobs.com/remote-jobs/computer-it), category + location pages (https://www.flexjobs.com/remote-jobs/computer-it/new-york), company pages (https://www.flexjobs.com/remote-jobs/company/zscaler), the remote-jobs page (https://www.flexjobs.com/remote-jobs) or single jobs (https://www.flexjobs.com/publicjobs/-).
maxItemsintegerOptionaldefault 20Max results
Maximum number of jobs to save across all searches and URLs. 0 means no limit (every matching job; FlexJobs lists about 130,000 open jobs in total).
categoriesarrayOptionalCategories
Only jobs in these FlexJobs categories (any of them).
remoteOptionsarrayOptionalRemote work level
Only jobs with these remote-work levels (any of them).
jobTypesarrayOptionalJob type
Only these kinds of employment (any of them).
schedulesarrayOptionalSchedule
Only these work schedules (any of them).
careerLevelsarrayOptionalCareer level
Only jobs for these career levels (any of them).
educationLevelsarrayOptionalEducation
Only jobs asking for these education levels (any of them).
travelarrayOptionalTravel
Only jobs with these travel requirements (any of them).
salaryRangesarrayOptionalSalary
Only jobs paying in these ranges (any of them), in US dollars as FlexJobs lists them.
accoladesarrayOptionalCompany awards
Only jobs at companies with these awards or lists (any of them), e.g. Fortune 500.
excludeWordsstringOptionalExclude words
Leave out jobs that contain these words, separated by spaces, e.g. senior manager.
postedWithinDaysintegerOptionalPosted within (days)
Only jobs posted in the last N days, e.g. 7. Older jobs are skipped and not charged. Empty or 0 for any date.
sortByenumOptionaldefault "newest"Sort by
Newest first reads every page exactly once, so large runs get every matching job. Relevance is FlexJobs' default order; it repeats some jobs across pages, so very large relevance runs can miss a few jobs (duplicates are never saved twice).
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work well for FlexJobs.com. If they are refused repeatedly, the run switches to US residential proxies by itself.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| job_id | string | null | |
| title | string | null | |
| url | string | null | |
| company | string | null | |
| company_id | string | null | |
| company_slug | string | null | |
| company_url | string | null | |
| company_logo | string | null | |
| location | string | null | |
| job_locations | array | null | |
| allowed_candidate_locations | array | null | |
| cities | array | null | |
| states | array | null | |
| countries | array | null | |
| remote_level | string | null | |
| remote_options | array | null | |
| job_type | string | null | |
| job_types | array | null | |
| schedule | string | null | |
| job_schedules | array | null | |
| career_level | array | null | |
| category | string | null | |
| categories | array | null | |
| job_categories | array | null | |
| category_slugs | array | null | |
| education_levels | array | null | |
| travel_required | string | null | |
| salary | string | null | |
| salary_min | number | null | |
| salary_max | number | null | |
| salary_currency | string | null | |
| salary_unit | string | null | |
| benefits | array | null | |
| accolades | array | null | |
| description_text | string | null | |
| job_summary | string | null | |
| date_posted | string | null | |
| created_on | string | null | |
| valid_through | string | null | |
| apply_url | string | null | |
| ats | string | null | |
| coordinates | array | null | |
| is_flexible_schedule | boolean | null | |
| is_telecommute | boolean | null | |
| is_freelancing_contract | boolean | null | |
| featured | boolean | null | |
| is_free_job | boolean | null | |
| hosted | boolean | null | |
| slug | string | null | |
| search_query | string | null | |
| source_url | string | null | |
| position | number | null | |
| source | string | null | |
| scraped_at | string | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Job | One saved FlexJobs job listing. | $0.00075 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('openrole/flexjobs-scraper').call({
"searchKeywords": [
"data analyst"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run openrole/flexjobs-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=openrole/flexjobs-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
No examples yet
The developer hasn't published example inputs for this actor.

Scrape Google Maps places for any search term and city, with no code or with one API call. A real run, its output, its log and its exact cost, plus the limits and the legal side.
Read the article
Paste an Amazon search or product URL into a ready-made Actor and get one row per product with price, ASIN, rating and review count. This guide covers the no-code steps, the API, ZIP code pricing, a real run and its cost.
Read the article
Scrape Google search results by query and country and get each results page as JSON: organic results with positions, People Also Ask and related searches. Run it without code or from Python, with a real run, the cost per page and Google's terms.
Read the articleScrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.