Seasonal Jobs & Worker Housing Scraper avatar

Seasonal Jobs & Worker Housing Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Seasonal Jobs & Worker Housing Scraper

Seasonal Jobs & Worker Housing Scraper

Scrape H-2A and H-2B seasonal job orders from the US Department of Labor, including housing details buried in PDF attachments. Get employer, job title, worker counts, dates, worksite addresses, housing units and occupancy— Export to CSV, schedule runs, pull via API, or connect over MCP for AI agents

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Alkausari M

Alkausari M

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Share

Collects U.S. seasonal job postings — including the worker housing details that normal job listings never show — from the official U.S. Department of Labor Seasonal Jobs portal. For every posting it opens the official government job-order document and extracts what's buried inside: worksite address, housing addresses, number of housing units, and how many workers they hold.

Who it's for

  • Recruiters and staffing agencies — track which employers are hiring seasonal workers, where and when
  • Housing, transport and service providers — know exactly where seasonal workers will live and work
  • Suppliers — find farms and businesses about to receive seasonal labor in your area
  • Researchers, journalists and advocacy groups — analyze seasonal labor demand and worker housing across DOL's official H-2A and H-2B job registry

Key Features

  • Reads the official job-order documents, not just the public search listing
  • Captures every housing site on a job order, each with its own address and capacity
  • Filter by state, job type (agricultural / non-agricultural), and start date
  • One bad document never stops a run: downloads are retried, unreadable files are logged and skipped
  • Structured output (JSON, CSV, Excel, XML) ready for spreadsheets and CRMs

Ready-made tasks

Don't want to work out the filters? These are pre-configured setups — open one, hit Start, and you get results. Each is a normal task, so you can change the state, date range or limit and save it as your own.

TaskWhat it doesBest for
TASK_URL_1The last 7 days of H-2A postings in Florida, newest firstRecruiters watching one state for fresh postings
TASK_URL_2Texas H-2A postings starting from today, up to 100Housing, transport and service providers — switch the Output tab to Housing sites
TASK_URL_3Every state, H-2B only, last 14 daysHospitality, landscaping and seafood staffing
TASK_URL_4Yesterday's new postings — built to run on a scheduleContinuous tracking; wire it to Google Sheets or Slack
TASK_URL_5All states, H-2A and H-2B, last 30 days, up to 500 postingsResearchers and journalists — allow around 5 hours for a full run

Tasks remember their settings, so any of them can be put on a Schedule — see Integrations & scheduling.

How to Run

▶️ In a hurry? Start from a ready-made task instead — the filters are already set.

  1. Click Run, then open the Input tab
  2. Pick a Worksite state and Job type (defaults: the 10 most recent agricultural jobs in Florida)
  3. Set Max job posts to 5 on your first run — enough to see the output shape and measure the cost before committing to a big run
  4. Set the proxy country to United States. Any proxy configuration works, but the DOL site is unreliable for traffic that doesn't come from a U.S. connection — the default US residential setting is the safe choice
  5. Click Start. Each posting is reported in the log as it's processed
  6. View results in the Output tab, or download from Storage → Dataset

Each posting means downloading and reading one PDF, so expect 30–50 seconds per posting — roughly 100 per hour. Postings are processed one at a time on purpose: it keeps the load on a government server modest and makes a single unreadable document harmless.

Input — Pick a state, a job type, and how many postings to pull

Set these in the Input tab. The defaults below fetch the 10 most recent agricultural postings in Florida — change location and jobtype to match what you're after, and keep top low until the filters are right. If you're calling the Actor via API or the CLI, paste this JSON as your input.

{
"location": "Florida",
"jobtype": "H-2A",
"offset": -7,
"top": 10,
"skip": 0,
"order": "accepted_date desc"
}
FieldWhat it does
locationWhere the work takes place — all 50 states, DC, and U.S. territories. Leave empty to search everywhere.
jobtypeAgricultural (H-2A: farm work, harvesting, nursery, livestock), Non-agricultural (H-2B: landscaping, hospitality, seafood processing), or All.
offsetHow far back to look in days, by the job's start date. 0 = starting today or later; -7 = also include jobs that started up to a week ago.
topHow many postings to collect, max 1000. The main lever on run time and cost.
skipSkips the first N results. Use with top to page through a larger set: top: 50, skip: 0, then top: 50, skip: 50.
orderMost recently posted first (default), oldest begin date first, or best match.

Output

One record per job posting, with all housing nested inside it. Which fields you get depends on Include PDF details (see Pricing): off gives the job-page fields only; on adds Total Workers, H-2A Workers, the Employment * address fields, Housing, and Additional Housing from the official PDF.

Employers often house workers at more than one address, but one job order is always exactly one record — extra sites live in the Additional Housing array. The Output tab has two views: Overview (one row per posting) and Housing sites (one row per housing location, each carrying its job's details). Your CSV or Excel export follows whichever view you pick.

A real run with Include PDF details turned on — job-page fields and PDF fields together:

{
"Case Number": "H-300-26210-131199",
"Job Post URL": "https://seasonaljobs.dol.gov/jobs/H-300-26210-131199",
"Job Title": "Farmworker / Harvester",
"Status": "ACTIVE",
"Employer": "Eberry Harvest Company LLC",
"Employer Email": "joineberryharvest@gmail.com",
"Employer Phone": "+18636754289",
"Employment Type": "TEMPORARY",
"First Date": "9/26/2026",
"Last Date": "11/29/2026",
"Job Duties": "The employer is seeking reliable, hardworking individuals to assist with the tomato and satsuma mandarin citrus harvest season. Duties include harvesting and packing...",
"Worksite Address": "218 N Graves St",
"Worksite City": "Quincy",
"Worksite State": "FLORIDA",
"Worksite Postal Code": "32351",
"Pay Rate Min": 14,
"Pay Rate Max": 0,
"Pay Unit": "HOUR",
"Pay Currency": "USD",
"Telephone Number to Apply": "+18636754289",
"Email address to Apply": "joineberryharvest@gmail.com",
"Full Time": "Yes",
"Number of Workers Requested": "98",
"Job Classification": "45-2092.00 - Farmworkers and Laborers, Crop, Nursery, and Greenhouse",
"Experience Required": "Yes",
"Months of Experience Required": "2",
"Special Requirements": "Workers must be dependable and punctual and have the ability to stand, bend, and work for long periods outdoors...",
"Number of Hours Per Week": "48",
"Work Schedule (Start/End time)": "7:30 A.M. - 4:00 P.M.",
"Company Name": "Eberry Harvest Company LLC",
"Location": "LaBelle, FL 33935",
"Address": "218 N Graves St, Quincy, FL 32351",
"ETA Case Number": "H-300-26210-131199",
"Multiple Worksites": "No",
"Additional Wage Information": "Per 24-quart bucket. (See Addendum A.)",
"Date Posted": "8/17/2026",
"Piece Rate Offer": "$0.70",
"Total Workers": "98",
"H-2A Workers": "98",
"Place of Employment Address": "218 N Graves St",
"Employment City": "Quincy",
"Employment State": "Florida",
"Employment Postal Code": "32351",
"Employment County": "Gadsden County",
"Housing": {
"Address/Location": "371 Centenary Camp Rd",
"City": "Quincy",
"State": "Florida",
"Postal Code": "32352",
"County": "Gadsden County",
"Total Units": "7",
"Total Occupancy": "80"
},
"Additional Housing": [
{
"Physical Location": "39 Rose Ct\nQuincy, Florida 32352\nGADSDEN COUNTY",
"Information": "Big Wish LLC Trailer Park",
"Total Units": "6",
"Total Occupancy": "20",
"Address/Location": "39 Rose Ct",
"City": "Quincy",
"State": "Florida",
"Postal Code": "32352",
"County": "GADSDEN COUNTY"
}
]
}

An empty value always means the job order genuinely didn't carry that detail — never "not collected". Where a field couldn't be read reliably off the scanned PDF, the Actor leaves it blank rather than guessing.

Most fields are self-explanatory — DOL's own labels come straight from the job page (Job Classification, Additional Wage Information, Special Requirements, and similar are exactly as published, not renamed). The ones worth a note:

FieldDescription
Job Duties / Status / Worksite * / Pay Rate *From the public job page, always present regardless of the PDF toggle.
Total Workers / H-2A WorkersPDF-only. Worker counts exactly as printed on the job order form: the total requested, and how many of those are H-2A workers.
HousingPDF-only. The primary worker housing site: address fields plus Total Units and Total Occupancy.
Additional HousingPDF-only. One entry per extra housing site — same address fields as Housing, plus Physical Location (the raw address block as printed) and Information (notes from the form). Empty when the job order lists no extra sites.

Pricing

Two tiers, controlled by Include PDF details:

TierWhat you getCost driver
Off (default)Job page data only — title, dates, employer contact, worksite address, pay, duties, requirementsOne page fetch per posting — fast, light on proxy traffic
OnEverything above, plus housing (addresses, units, occupancy) and exact worker counts from the official job-order PDFOne extra PDF download per posting — the larger cost, billed per gigabyte of residential proxy traffic

The PDF tier is only charged for postings whose PDF actually downloaded and parsed successfully — a failed or unreadable PDF costs nothing, and the run keeps going with the job-page data for that posting.

Budget by run time: roughly 30–50 seconds per posting when PDFs are on, faster with them off. The reliable estimate is your own: run once with Max job posts set to 5 (PDFs on or off, matching how you plan to run it), check that run's cost in the Console, and multiply.

Integrations & scheduling

Results don't have to stay on Apify. Without writing any code you can:

  • Send postings to Google Sheets, Airtable or Slack — pick the integration on the Actor's Integrations tab and every run appends its results automatically
  • Connect anything else via Zapier or Make — thousands of apps, triggered when a run finishes
  • Fire a webhook to your own server the moment a run completes, with a link to the fresh dataset
  • Pull the data over the API in JSON, CSV, Excel or XML — one URL, ideal for a script or notebook
  • Call it from an AI agent over MCP — Apify's MCP server exposes this Actor as a tool for any MCP-compatible agent (Claude, and others), so an agent can look up seasonal job postings mid-conversation instead of you writing integration code

Run it on a schedule. Save a task with offset: -1, set it to run every morning, and send the output to a sheet — that's a working new-posting alert with no code at all. Because offset is date-based, each run picks up only what's new, so your sheet grows without duplicating yesterday's postings.

FAQ

My run failed, or every posting errored. Almost always the proxy — set the country to United States.

My run returned no jobs. Filters too narrow. Widen the day offset to -30, switch job type to All, or clear the location. The log prints the filter used.

Some housing or address fields are empty. The source documents are scanned forms; the Actor leaves a field blank rather than guessing. Unsplittable addresses are kept whole in Physical Location.

Some postings are missing. A PDF that can't be read is skipped and logged — the run summary lists those case numbers so you can re-run just them.

Is this legal? The Seasonal Jobs portal is a public U.S. government transparency resource. No authentication, no private data. Comply with the laws in your jurisdiction.

Support

Bugs, feature requests, or custom work — more states, extra fields, scheduled pipelines — open an issue on Apify or email alkausarimujahid@gmail.com.