> For the complete documentation index, see [llms.txt](https://docs.jobfront.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.jobfront.io/jobs-data-platform/scrapers-intro.md).

# Scrapers Intro

This document explains how JobFront gathers data from employer job boards.

***

### Overview

JobFront scrapes job listings **directly from employer career pages and ATS-hosted job boards** — not from job aggregators. For each tracked company, we store the canonical URL to the job posting (e.g., `https://jobs.lever.co/acme` or `https://acme.wd5.myworkdayjobs.com/careers`). Our scraping workers visit those URLs on a recurring schedule, extract all active job listings, and update our database accordingly.

This approach means we reflect changes to a company's job board as quickly as our scraping cadence allows - between every 8 minutes and every 24 hours, depending on the job board.

***

### Scraping Cadence & SLA

**Our nominal SLA is to scrape every job board once every 24 hours.**

In practice:

* A continuous pool of workers processes job boards from a queue.
* Each job board is emitted into the queue based on when it was last successfully scraped.
* Workers process the queue continuously.
* Under normal load, most job boards are scraped **within 12–24 hours** of their last successful scrape.
* Some high-priority job boards may be prioritized to run more frequently, up to every 8 minutes.

***

### Supported ATS Platforms

JobFront support hundreds of common ATS's around the world, reach out to learn more.

#### Custom Scrapers

Increasingly our data corpus is filled with custom-generated scrapers for non-ATS-based sites (directly gathering data from employer careers pages and websites). We have a sophisticated system that allows us to build thousands of custom scrapers every day, and maintain those scrapers at scale to protect against changing job boards.
