OrbTop

AI & ML Job Listings Scraper

JOBSLEAD GENERATION

Independent tool. Trademarks referenced on this page are the property of their respective owners and are used only to identify the public website this tool reads. No affiliation or endorsement.

AI & ML Job Listings Scraper

Scrape AI, ML, data science, and related engineering job listings from foorilla.com/hiring — the career platform that now hosts the job board formerly published at aijobs.net. Extracts salary range, seniority, years of experience, remote policy, skills, education requirements, tasks and the apply URL for each posting.

What data does it extract?

Each record includes:

Field Description
job_id Numeric job ID
job_slug URL slug for the job
title Job title
company_name Hiring company, as rendered (the site truncates this in the job view, e.g. G...)
location_raw Location string as shown; semicolon-separated when a posting lists several
location_city City or region (first location when several are listed)
location_country Country (first location when several are listed)
is_remote Boolean — remote-eligible
remote_policy remote / onsite
employment_type full-time / part-time / contract / internship
seniority entry / mid / senior / staff / principal
years_experience_raw Years-of-experience hint as shown (e.g. ~10yoe)
salary_min Minimum salary in salary_currency
salary_max Maximum salary in salary_currency
salary_currency Currency code (USD, EUR, GBP, SEK, PLN, CHF, …)
salary_raw Raw salary string from the page
is_salary_estimated Boolean — true when the site labels the range (estimate) rather than sourcing it from the employer
posted_at Exact publication date (ISO YYYY-MM-DD)
role_category Inferred: ai-engineer, ml-engineer, data-scientist, research, mlops, data-engineer, other
tech_tags Comma-separated skill / tech-stack tags
education_requirements Comma-separated education requirements
job_roles Comma-separated role taxonomy the site assigns
tasks Pipe-separated responsibilities
perks Pipe-separated perks and benefits
views View count the site reports
apply_clicks Apply-click count the site reports
saves Save count the site reports
language Language code of the posting
apply_url Direct apply link
profile_url Canonical job page URL
scraped_at ISO-8601 timestamp when the record was collected

How does it work?

The actor pages the public job listing at foorilla.com/hiring/jobs/ to discover postings, then reads each job detail page and returns every field above — salary, seniority, skills, education and tasks — as one flat record per job, ready to load straight into a sheet or a database.

The maxItems input controls how many records to collect.

Coverage

This actor returns the freshest ~105 public postings, not the entire board. foorilla serves anonymous callers listing pages 1 and 2 (roughly 55 + 50 jobs) and answers page 3 onward with "Sign in to view more". There is no unauthenticated surface that reaches deeper — verified 2026-09-05 against paged and filtered listings, the "top" listing (which ignores paging), sitemap.xml, sitemap-jobs.xml, RSS and /api/jobs/, none of which expose the rest of the inventory.

Setting maxItems: 0 collects everything reachable, which is that ~105, not the full board.

Historical note: until 2026-09-03 this actor scraped aijobs.net via a ~48,000-URL sitemap. That domain now redirects to foorilla.com and the sitemap is gone. The much smaller number above reflects what the successor site exposes publicly, not a regression in the actor.

Input

{
  "maxItems": 100
}
Parameter Type Default Description
maxItems integer 10 Maximum number of job records to collect. Set to 0 for everything reachable.

Use cases

  • AI talent market research — track demand across roles (AI engineer, ML engineer, MLOps, research scientist) over time
  • Salary benchmarking — compare compensation by role, seniority, and region, separating employer-published ranges from site estimates via is_salary_estimated
  • RecOps & ATS enrichment — bulk-import active job listings for sourcing workflows
  • Remote work signal monitoring — filter by remote_policy for location-agnostic hiring intelligence
  • Tech stack trend analysis — aggregate tech_tags to identify the fastest-rising skills

Notes

  • Salary values are annualized and reported in the posting's own currency; salary_currency carries the code and salary_raw the original string. Many ranges are the site's own estimates — check is_salary_estimated before treating one as employer-published.
  • posted_at is the exact publication date the site prints, not an estimate derived from a "posted N days ago" label.
  • company_name is truncated by the site in this view. The full name is only on the company index, which the site's robots.txt disallows, so it is emitted as rendered rather than guessed.
  • Because coverage is recency-ordered, repeated runs are the intended way to accumulate history — each run returns the newest postings.