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

Scrape Michael Page job ads from 35 country sites by keyword and location or URL: title, salary range, contract type, sector, full description split into role, requirements and offer, posting date, recruiter name and phone.
Turn Michael Page job search into a clean spreadsheet. Search by keyword and location on any of 34 Michael Page country sites (or paste search and job URLs) and get each job's title, location, salary range, contract type, sector, posting date, the full description split into company, role, requirements and offer, and the recruiter's name and phone. No login and no browser: 20 jobs with full job pages take about 13 seconds, 1,000 jobs about a minute, and you pay $0.70 per 1,000 jobs.
project manager, accountant), an optional location (e.g. London, New York) and choose the country site.| Field | What it does |
|---|---|
searchQueries | Job titles or skills, one per line. Each keyword is one search. |
location | Optional city, state or region. Empty = the whole country. |
country | Country site for the keywords: US (michaelpage.com), GB, DE, FR, AU, CA, JP, IN, SG, BR, AE and 23 more. |
startUrls | Michael Page search pages or job pages, from any country site. |
maxItems | Jobs per keyword or search URL. Default 20, 0 = all. |
contractType | any, permanent or temp. |
minSalary, maxSalary | Yearly salary range in thousands of the site's currency (e.g. 100 = 100,000 USD). Each site filters in its own steps; other values are rounded to the nearest step. |
sortBy | relevance, most_recent, salary_high or salary_low. |
includeDetails | Open each job page for the full description, date, structured salary, sector and recruiter. Default on. |
maxPagesPerSearch | Optional cap on result pages per search (20 to 30 jobs per page). |
proxyConfiguration | Datacenter proxy by default; the run moves to residential exits in the site's country by itself if the site refuses requests. |
{
"searchQueries": ["project manager", "accountant"],
"location": "London",
"country": "GB",
"maxItems": 50,
"contractType": "permanent",
"minSalary": 50,
"sortBy": "most_recent",
"includeDetails": true,
"proxyConfiguration": { "useScrapelyProxy": true, "scrapelyProxyGroups": ["DATACENTER"] }
}
One row per job. The main fields:
| Field | Description |
|---|---|
title, url, applyUrl | Job title as advertised, job page and apply page |
location, city, region, countryCode | Where the job is |
salary | Salary text as shown on the site |
salaryMin, salaryMax, salaryCurrency, salaryPeriod | Structured salary (when the ad publishes one) |
contractType, employmentType | Contract as the site words it (Permanent, Temporary, CDI, 正社員...) and the standard type (FULL_TIME...) |
sector, subSector, industry | Michael Page's job function, specialism and the client's industry |
datePosted, remote, workArrangement | Posting date, remote flag and the site's remote/hybrid note |
summary, bulletPoints | Short summary and highlight bullets from the search results |
aboutClient, jobDescription, requirements, offer | The ad's four sections as plain text |
descriptionText, descriptionHtml | Full description as text and HTML |
consultantName, consultantPhone, reference | Recruiter and job reference |
company, featured, listingId, site | Advertiser, ad type, the site's job id and country site |
searchQuery, searchUrl, position, scrapedAt | Which search found the job, its rank in that search and when it was scraped |
Example (one job from a test run, trimmed; the recruiter name is replaced with a fictional one):
{
"title": "Construction Project Manager",
"company": "Michael Page",
"location": "Buffalo, New York",
"city": "Buffalo",
"region": "New York",
"countryCode": "US",
"salary": "USD99,000 - USD121,000 per year",
"salaryMin": 99000,
"salaryMax": 121000,
"salaryCurrency": "USD",
"salaryPeriod": "YEAR",
"contractType": "Permanent",
"employmentType": "FULL_TIME",
"sector": "Construction",
"subSector": "Project Manager",
"industry": "Property",
"datePosted": "2026-10-21",
"summary": "As a Project Manager in New York, you will oversee construction projects within the property industry, coordinating work from planning through completion.",
"bulletPoints": ["Great Benefits", "Large Pipeline"],
"aboutClient": "Michael Page is the hiring company in the property industry in New York.",
"jobDescription": "- Plan and coordinate construction project activities from initial planning through completion.\n\n- Track project schedules, priorities, and key deliverables to maintain steady progress.",
"requirements": "A successful 'Project Manager' should have:\n\n- Experience managing construction projects from planning through completion.",
"offer": "- Permanent Project Manager position in New York.\n\n- Salary range of $99,000 to $121,000.",
"descriptionText": "- Great Benefits\n\n- Large Pipeline\n\nAbout Our Client\nMichael Page is the hiring company in the property industry in New York.\n...",
"consultantName": "Alex Morgan",
"consultantPhone": null,
"reference": "JN-102026-7131204",
"listingId": "7058516",
"featured": "Featured job",
"url": "https://www.michaelpage.com/job-detail/project-manager/ref/jn-102026-7131204",
"applyUrl": "https://www.michaelpage.com/job-apply/project-manager/ref/jn-102026-7131204",
"site": "www.michaelpage.com",
"searchQuery": "project manager",
"searchUrl": "https://www.michaelpage.com/jobs/project-manager",
"position": 1,
"scrapedAt": "2026-10-22T01:19:44.512Z"
}
You pay $0.70 per 1,000 jobs saved ($0.0007 per job), plus the small platform usage of the run (compute and proxy traffic), which is billed separately. Full job pages are included in that price.
Example: 1,000 jobs with full job pages ≈ $0.70 for the results plus about $0.03 of platform usage, so about $0.73 in total. In our tests at the default 512 MB, 1,000 jobs took about one minute and used about 25 MB of datacenter proxy traffic (≈ $0.025) and ≈ $0.003 of compute; all 7,776 jobs on michaelpage.com took 8.5 minutes and ≈ $0.21 of platform usage. 20 jobs cost about $0.015 in total.
Is it legal to scrape Michael Page? The actor reads only public job ads that anyone can see without an account. You are responsible for how you use the data, in particular for recruiters' names and phone numbers under data-protection rules such as GDPR.
Do I need a login or my own proxy? No. No account, cookies or API key are needed, and the built-in datacenter proxy is enough.
How many jobs can I get?
Every job a search has: set maxItems to 0. Michael Page pages through all results; in our test a run collected all 7,776 jobs listed on michaelpage.com. The UK and France list several thousand jobs each.
Why is a field empty?
The ad does not publish it: many ads outside the US and UK have no salary, consultantPhone is shown on some country sites only, and remote is set only when the ad says so. With includeDetails off, only the search-card fields (title, location, contract, salary text, summary, bullets) are filled.
Why does my location return jobs from a nearby town? Michael Page maps the location you type to its own place list and may pick a neighbouring place. Paste the search URL from the site instead when you need an exact area.
Can I schedule it or use the API?
Yes. Schedule runs (for example daily, sorted by most_recent) and start runs or download results through the API in JSON, CSV or Excel.
salaryMin/salaryMax empty.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.
searchQueriesarrayOptionalSearch keywords
Job titles or skills to search for, one per line, e.g. project manager, accountant, data analyst. Each keyword is one search on the chosen country site.
locationstringOptionalLocation
Optional city, state or region, e.g. New York, London, München. Michael Page matches it to its own place list. Leave empty to search the whole country.
countryenumOptionaldefault "US"Country site
Which Michael Page country site the keywords are searched on. URLs below always use their own site.
startUrlsarrayOptionalMichael Page URLs
Optional. Search pages from any Michael Page site (e.g. https://www.michaelpage.co.uk/jobs/project-manager/london or https://www.michaelpage.com/jobs?search=accountant) and job pages (https://www.michaelpage.com/job-detail/.../ref/jn-...). Each search URL counts as one search.
maxItemsintegerOptionaldefault 20Max jobs per search
How many jobs to save for each keyword and each search URL. Jobs that show up in several searches are saved once. 0 means every job the search has (Michael Page lists every page of results).
contractTypeenumOptionaldefault "any"Contract type
Keep only permanent or only temporary jobs.
minSalaryintegerOptionalMinimum salary (thousands)
Yearly salary floor in thousands of the site's currency, e.g. 100 = 100,000 USD on michaelpage.com or 5000 = 5,000,000 JPY on michaelpage.co.jp. Each site filters in its own steps (michaelpage.com: 0, 25, 50 ... 300, 400, 500), so other values are rounded down to the site's nearest step.
maxSalaryintegerOptionalMaximum salary (thousands)
Yearly salary ceiling in thousands of the site's currency. Rounded up to the site's next step.
sortByenumOptionaldefault "relevance"Sort by
The order Michael Page returns jobs in. With a job limit this decides which jobs you get.
includeDetailsbooleanOptionaldefault trueInclude full job page
Open each job page for the full description (also split into company, role, requirements and offer), posting date, structured salary, sector, subsector, industry, recruiter name and phone, and job reference. Turn off for a faster list with title, location, contract type, salary text, summary and highlights only.
maxPagesPerSearchintegerOptionalMax result pages per search
Optional. Stop each search after this many result pages (20 to 30 jobs per page). Empty or 0 means no page limit; Max jobs per search still applies.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy
Datacenter proxies work for Michael Page. The run switches to residential exits in the site's country by itself if the site starts refusing requests.
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 |
|---|---|---|
| title | string | null | |
| company | string | null | |
| location | string | null | |
| city | string | null | |
| region | string | null | |
| countryCode | string | null | |
| salary | string | null | |
| salaryMin | number | null | |
| salaryMax | number | null | |
| salaryCurrency | string | null | |
| salaryPeriod | string | null | |
| contractType | string | null | |
| employmentType | string | null | |
| sector | string | null | |
| subSector | string | null | |
| industry | string | null | |
| remote | boolean | null | |
| workArrangement | string | null | |
| datePosted | string | null | |
| validThrough | string | null | |
| summary | string | null | |
| bulletPoints | array | null | |
| aboutClient | string | null | |
| jobDescription | string | null | |
| requirements | string | null | |
| offer | string | null | |
| descriptionText | string | null | |
| descriptionHtml | string | null | |
| consultantName | string | null | |
| consultantPhone | string | null | |
| reference | string | null | |
| listingId | string | null | |
| featured | string | null | |
| url | string | null | |
| applyUrl | string | null | |
| site | string | null | |
| searchQuery | string | null | |
| searchUrl | string | null | |
| position | number | null | |
| scrapedAt | 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 job saved to the dataset, with its full job page (description, salary, sector, recruiter) when Include full job page is on. | $0.0007 |
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/michaelpage-scraper').call({
"searchQueries": [
"project manager"
],
"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/michaelpage-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/michaelpage-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.