Bing Jobs Scraper — Job Postings From Every Board Bing Indexes avatar

Bing Jobs Scraper — Job Postings From Every Board Bing Indexes

Pricing

from $2.64 / 1,000 search jobs

Go to Apify Store
Bing Jobs Scraper — Job Postings From Every Board Bing Indexes

Bing Jobs Scraper — Job Postings From Every Board Bing Indexes

Scrape Bing Jobs: one search returns postings from LinkedIn, ZipRecruiter, Monster, CareerBuilder, Glassdoor and more. Each job lists every board carrying it, with the full description, apply links and the exact posting date.

Pricing

from $2.64 / 1,000 search jobs

Rating

0.0

(0)

Developer

SIÁN OÜ

SIÁN OÜ

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

5 days ago

Last modified

Share

Bing Jobs Scraper — Job Postings From Many Boards 🚀

SIÁN Agency Store Store-Jobs Search API Store-LinkedIn Jobs Scraper Store-Glassdoor Scraper

🎉 One search, every board Bing indexes: LinkedIn, ZipRecruiter, Monster, CareerBuilder, Glassdoor and more

Built for recruiters, job boards and hiring-data teams who want one job feed instead of five scrapers

🔎 What is the Bing Jobs Scraper — and when should you use it?

The Bing Jobs Scraper turns job postings from every board Bing indexes, with all the boards carrying each one into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

Use it when you need: job postings as rows from one search that covers many job boards at once: title, employer, location, the exact posting and expiry dates, the full description, and every board carrying the posting with its own apply link. Bing already merges a posting listed on LinkedIn, ZipRecruiter, Monster or CareerBuilder into one row, so you get one feed without scraping each board and de-duplicating it yourself.

Use something else when: you need salaries, or one specific board in depth. Use Jobs Search API for Indeed, LinkedIn and Glassdoor through Google for Jobs, with salary estimates by title and company. Use ZipRecruiter Jobs Scraper for ZipRecruiter postings in depth, including the salary ranges ZipRecruiter publishes. Use Glassdoor Scraper for employer reviews, salary reports and interview notes rather than open roles. Bing publishes no salary field, so this actor returns no salary column; pay appears only where the employer wrote it into the description. One search reaches at most 50 pages of 10 jobs, about 500, so a broader pull has to be split by city or by narrower titles.

🤖 Use with AI agents

Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/bing-jobs-scraper

Your agent can pay for its own runs. This Actor is eligible for agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

I want job postings from many boards in one run, with apply links and exact posting dates using the Apify Actor `sian.agency/bing-jobs-scraper`.
Use it when I need: job postings as rows from one search that covers many job boards at once: title, employer, location, the exact posting and expiry dates, the full description, and every board carrying the posting with its own apply link. Bing already merges a posting listed on LinkedIn, ZipRecruiter, Monster or CareerBuilder into one row, so you get one feed without scraping each board and de-duplicating it yourself.
Don't use it when: you need salaries, or one specific board in depth — use jsearch-jobs-scraper or ziprecruiter-jobs-scraper or glassdoor-data-scraper instead.
How to call it: pick one `operation` per run. `search` finds jobs: give it `query` (a job title works best) and optionally `location` such as "Austin, TX", a two-letter `country`, and `maxResults` up to 500. `datePosted`, `employmentTypes`, `remoteOnly` and `radiusMiles` (10, 20, 30 or 40) narrow the results, and `excludePublishers` drops boards you already collect, such as LinkedIn. `includeDescriptions` is on by default and costs nothing extra; turning it off makes a run about 3x faster but leaves out the description and apply links. `jobDetails` re-checks up to 20 ids per call from `jobIds` and returns only postings Bing still serves. It is billed per id, so use it to check a shortlist, not to collect jobs a search already returns.
Start with this input:
{
"operation": "search",
"query": "software engineer",
"location": "Austin, TX",
"datePosted": "week",
"maxResults": 50
}
Ask me which job title I want, which city or country, and whether I need only recent postings, then run the Actor and summarise the results as a table.

Things you can ask your agent for:

  • Find remote contract data engineer jobs posted this week and list which boards carry each one.
  • Pull 200 registered nurse jobs in London and leave out the ones listed on LinkedIn.
  • Re-check these 20 saved job ids and tell me which postings have closed.

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/bing-jobs-scraper.md.

📋 Overview

Bing Jobs already merges the job boards for you. Bing's job search pulls postings from LinkedIn, ZipRecruiter, Monster, CareerBuilder, Glassdoor, Jooble, Adzuna and others, and folds a posting listed on several of them into one result. This actor turns that search into clean rows: title, employer, location, exact posting and expiry dates, the full description, and every board carrying the posting with its own apply link.

What you get:

  • ✅ Many boards, one row per posting: a job listed on ZipRecruiter and Jooble arrives once, with both boards and both apply links
  • 📄 Full descriptions included: every search row carries the complete job description (2,800 to 16,400 characters in our test runs) at no extra charge
  • 🗓️ Exact dates: posting and expiry timestamps in UTC, next to Bing's own "6 days ago" badge
  • 🎚️ Bing's own filters: date posted, employment type, remote only and distance, plus a filter that leaves out boards you already collect
  • 💰 Pay per job: $0.003 per job on the Bronze plan, and nothing for jobs your filters removed or searches that found nothing
  • 🔁 Same columns as our other job scrapers: the shared fields use the same names as our Jobs Search API and LinkedIn Jobs Scraper, so the rows merge without remapping

✨ Features

  • 🔍 Search Jobs: keyword plus location, in any country Bing runs a jobs index for (us, gb, de, fr, ca, au and more)
  • 📰 Board coverage on every row: jobPublisher names where the posting was found, jobPublishers lists every board carrying it
  • 🔗 Apply links per board: applyOptions holds one apply link for each board, decoded to the board's own URL
  • 🗓️ Date filters: past 24 hours, 3 days or week, using Bing's own filters (Bing applies them loosely, so check postedAtUtc when the window must be strict)
  • 💼 Employment types: full-time, part-time, contract and internship
  • 🏠 Remote only: Bing's own work-from-home filter
  • 📏 Distance: within 10, 20, 30 or 40 miles of the location
  • 🚫 Leave out job boards: drop LinkedIn, Indeed or any board you already scrape directly
  • 📋 Job Details: re-check up to 20 saved job ids per call and see which postings are still open
  • 🧭 Normalized titles and company ids: normalizedTitle and bingCompanyId group title variants and postings by employer

🎬 Quick Start

Pick Search Jobs, type a job title and a location, and press Start. A run of 20 jobs finishes in well under a minute. Export the rows as JSON, CSV or Excel, or pull them over the API.

curl -X POST 'https://api.apify.com/v2/acts/sian.agency~bing-jobs-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation": "search", "query": "software engineer", "location": "Austin, TX", "maxResults": 50}'

🚀 Getting Started (3 Simple Steps)

Step 1: Choose an operation

Search Jobs to find postings, or Job Details to re-check job ids you saved from an earlier run.

Step 2: Describe the job

Type a job title in Search keyword and a place in Location, for example "registered nurse" and "London" with country code gb.

Step 3: Run it and open your dataset

Press Start. Rows appear in the dataset as they arrive, and the run report lists every job with its apply link.

That's it! In under a minute, you'll have:

  • Job postings with title, employer, location and exact posting date
  • Every job board carrying each posting, with an apply link for each
  • The full job description on every row

📥 Input Configuration

FieldTypeRequiredDescription
operationstringNosearch (default) or jobDetails
querystringFor Search JobsJob title or phrase, e.g. "software engineer"
locationstringNoCity, region or country, e.g. "Austin, TX"
countrystringNoTwo-letter country code that picks Bing's national index (default us)
datePostedstringNoall, today, 3days, week or month
employmentTypesarrayNoFULLTIME, PARTTIME, CONTRACTOR, INTERN
remoteOnlybooleanNoOnly remote and work-from-home jobs
radiusMilesstringNo10, 20, 30 or 40 miles from the location
excludePublishersarrayNoJob boards to leave out, e.g. LinkedIn
jobIdsarrayFor Job DetailsJob ids from an earlier Search Jobs run, up to 20 per call
includeDescriptionsbooleanNoFull description and apply links (default on)
maxResultsintegerNoUp to 500 jobs per search (default 20)

Search example:

{
"operation": "search",
"query": "data engineer",
"location": "Chicago, IL",
"datePosted": "week",
"employmentTypes": ["CONTRACTOR"],
"remoteOnly": true,
"maxResults": 100
}

Job Details example:

{
"operation": "jobDetails",
"jobIds": [
"YmluZzotMTU3NzQ5MTk1MC5SZXRybw",
"-1941068330.Retro"
]
}

📤 Output

Each row is one job posting with 30 fields. The most useful ones:

FieldTypeDescription
jobTitlestringJob title as posted
employerNamestringHiring company
employerLogostringEmployer logo image
locationstringLocation as Bing shows it
postedAtUtcstringPosting date and time in UTC
expiresAtUtcstringWhen Bing expires the posting
jobPublisherstringThe board the posting was found on
jobPublishersarrayEvery board carrying the posting
applyLinkstringApply link on the first board
applyOptionsarrayOne apply link per board
jobDescriptionstringFull job description
employmentTypestringBing's label, e.g. Full-time or Contract
isRemotebooleanMarked remote by Bing
normalizedTitlestringNormalized title for grouping
bingCompanyIdstringBing's company id for grouping by employer
jobIdstringId to pass to Job Details later

Example:

{
"jobId": "YmluZzotMTU3NzQ5MTk1MC5SZXRybw",
"jobTitle": "Staff Software Engineer - Developer Experience",
"employerName": "General Motors",
"employerLogo": "https://th.bing.com/th/id/OJA.69516802NS?w=24&h=24&o=6&pid=JobAns",
"jobPublisher": "ZipRecruiter",
"jobPublishers": ["ZipRecruiter", "Jooble"],
"employmentType": "Full-time",
"employmentTypes": ["FULLTIME"],
"applyLink": "https://www.ziprecruiter.com/c/General-Motors/Job/Staff-Software-Engineer-Developer-Experience/-in-Austin,TX?jid=c6ac4eac3e5aa446&trk=bingjobs",
"applyIsDirect": false,
"applyOptions": [
{ "apply_link": "https://www.ziprecruiter.com/c/General-Motors/Job/Staff-Software-Engineer-Developer-Experience/-in-Austin,TX?jid=c6ac4eac3e5aa446&trk=bingjobs", "is_direct": false, "publisher": "ZipRecruiter" },
{ "apply_link": "https://jooble.org/jdp/-8809920332495381921?trk=bingjobs", "is_direct": false, "publisher": "Jooble" }
],
"jobDescription": "Identifies, defines, and formalizes problems such that they can drive design, development, and deployment of algorithmic solutions…",
"isRemote": false,
"postedAt": "6 days ago",
"postedAtBingLabel": "6 days ago",
"postedAtTimestamp": 1789740720,
"postedAtUtc": "2026-09-18T14:12:00.000Z",
"expiresAtTimestamp": 1792281600,
"expiresAtUtc": "2026-10-18T00:00:00.000Z",
"location": "Austin, TX",
"city": "Austin",
"state": "Texas",
"country": "US",
"normalizedTitle": "staff software engineer",
"bingCompanyId": "1472",
"bingTitleId": "1586",
"position": 0,
"jobUid": "-1577491950.Retro",
"_sourceQuery": "software engineer",
"_operation": "search",
"_fetchedAt": "2026-09-24T15:22:10.000Z",
"status": "success"
}

Empty fields are left out of a row rather than written as null. Job Details rows carry the same fields except position, bingCompanyId and bingTitleId, which exist only in search results.


💼 Use Cases & Examples

1. Multi-board job feed for a job board

Job board operators fill a niche site from one source instead of scraping five boards and de-duplicating them.

Input: A job title, a location and Past 24 hours Output: Fresh postings, each listing every board carrying it Use: A daily import that only brings in new roles

2. Recruiting pipeline and talent sourcing

Recruiters and agencies pull every open role for a title and city on a schedule.

Input: "registered nurse", "London", country gb Output: Postings with full descriptions and exact posting dates Use: Spot new openings the day they appear and brief candidates from the description

3. Hiring-signal lead generation

Sales teams treat an open role as a buying signal for the tools that role uses.

Input: The job title your product serves, e.g. "salesforce administrator" Output: Employers hiring for it, grouped by bingCompanyId Use: Rank accounts by how many matching roles they have open this week

4. Labor market and hiring trend analytics

Analysts track posting volume by title, city and employment type over time.

Input: A set of titles run weekly with Past week Output: Postings with exact UTC dates and normalized titles Use: Weekly cohorts that hold up, grouped across title variants

5. Job board coverage audits

HR-tech teams measure how much of a market each board carries.

Input: One search per role and city Output: jobPublishers on every row Use: See which share of postings LinkedIn, ZipRecruiter or Monster actually carries

6. Contract and remote job alerts

Freelancers and staffing firms watch for contract and remote roles only.

Input: Employment types CONTRACTOR, Remote jobs only on, Past 24 hours Output: New remote contract postings with apply links Use: A scheduled run that feeds a Slack channel or an email digest

7. Checking whether saved jobs are still open

Candidates and recruiters re-check a shortlist before acting on it.

Input: Up to 20 job ids per call from an earlier run Output: Only the postings Bing still serves Use: A missing id means the role has closed


🔗 Integration Examples

JavaScript/Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sian.agency/bing-jobs-scraper').call({
operation: 'search',
query: 'software engineer',
location: 'Austin, TX',
datePosted: 'week',
maxResults: 50
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].jobTitle, items[0].jobPublishers);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('sian.agency/bing-jobs-scraper').call(
run_input={
'operation': 'search',
'query': 'registered nurse',
'location': 'London',
'country': 'gb',
'maxResults': 100,
}
)
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item['jobTitle'], item.get('employerName'), item.get('applyLink'))

cURL

curl -X POST 'https://api.apify.com/v2/acts/sian.agency~bing-jobs-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation": "search", "query": "data analyst", "location": "Chicago, IL", "datePosted": "today"}'

Automation Workflows (N8N / Zapier / Make)

  1. Trigger: a daily schedule
  2. HTTP Request: run the actor with your search and Past 24 hours
  3. Process: keep the rows whose jobPublishers or employmentType you care about
  4. Action: post new jobs to Slack, a Google Sheet or your ATS

📊 Performance & Pricing

FREE Tier (Try It Now)

  • 25 jobs per run, with every field and full descriptions
  • No credit card required
  • Enough to check the data fits your use case
  • Up to 500 jobs per search, the most Bing serves for one query
  • Split big pulls by city or title and run them on a schedule
  • Pay per result: only jobs actually returned are charged

💰 $0.003 per job on the Bronze plan, with lower prices on higher plans. Job Details costs $0.01 per re-checked job, because each id is looked up on its own. A small start fee applies per run.

🔗 View current pricing


❓ Frequently Asked Questions

Q: Which job boards does this cover? A: Every board Bing's job search indexes. In our test runs: LinkedIn, ZipRecruiter, Monster, CareerBuilder, Glassdoor, Jooble, Jobrapido and Adzuna. Each row names the board it was found on and every board carrying it.

Q: Does it return salaries? A: No. Bing does not publish salary as a field, so there is no salary column. When the employer states pay in the description, it is in jobDescription as written.

Q: Is the posting date exact? A: Yes. postedAtUtc comes from Bing's own record. Where Bing published only a date, the time reads midnight UTC. Bing's own badge, such as "6 days ago" or "June 22", is kept as postedAtBingLabel.

Q: How many jobs can one search return? A: Up to about 500. Bing serves 10 jobs per page and at most 50 pages for one search. For more, split the search by city or by narrower titles.

Q: Why did a date filter return older jobs? A: The date filters are Bing's own, and Bing applies them loosely. In our test runs Past 24 hours also returned 2-day-old postings. Bing's widest window is 7 days, so Past month returns every date. When the window must be strict, filter on postedAtUtc yourself.

Q: When should I use Job Details instead of Search Jobs? A: Only to re-check job ids you already hold. A search row already carries the full description and apply links, and Job Details costs more per job. It returns only postings Bing still serves, so a missing id means the role has closed.

Q: What output formats are available? A: JSON, CSV, Excel, XML and HTML, straight from the Apify dataset, or over the API.

Q: How is a run billed? A: A small start fee, then per job written to the dataset. Jobs removed by your filters, ids that no longer resolve and failed inputs cost nothing.


🐛 Troubleshooting

The search returned no jobs

  • Use a job title rather than a single loose keyword: "data analyst" works better than "data"
  • Check the country code matches the location, e.g. de for Berlin
  • Widen Date posted or drop the distance, employment type and board filters

Fewer jobs than Max jobs

  • Bing ran out of results for that search, or your board or internship filter removed some
  • Split a broad search into several narrower ones

Job Details returned fewer rows than ids

  • Those postings have closed or been taken down, which is how you detect a filled role
  • Take fresh ids from a new Search Jobs run

Some rows have no description or apply link

  • Include full descriptions was turned off. Turn it back on; it costs nothing extra

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the legality of web scraping.

Bing is a trademark of Microsoft Corporation. This actor is not affiliated with, endorsed by, or sponsored by Microsoft, and it reads only Bing's public job search results. Job board names are trademarks of their respective owners.


🤝 Support

Join our active support community


Built by SIÁN Agency | More Tools