---
title: "Job board backfill: what backfill means in hiring, and how backfill feeds work"
description: "[NewSearch millions of jobs from your AI agent with MCP→](/blog/jobspipe-mcp-server)"
canonical: https://jobspipe.dev/blog/job-board-backfill
last_updated: 2026-09-10
---

[NewSearch millions of jobs from your AI agent with MCP→](/blog/jobspipe-mcp-server)

[All posts](/blog)

![](/listly/card-field.png)

ReferenceBackfill

Reference·Sep 9, 2026·9 min read

# Job board backfill: what backfill means in hiring, and how backfill feeds work

Backfill has two meanings: in recruiting it is a replacement hire, on a job board it is third-party listings that keep the board full. How XML and JSON backfill feeds work, dedup and attribution, what each board's postings actually carry, backfill providers compared, and the API calls that backfill a board and take closed roles down again.

![Dvir Atias](/authors/dvir-atias.jpg)

Dvir Atias

Founder, JobsPipe

“Backfill” means two different things depending on who says it. A recruiter means a replacement hire. A job board operator means third-party listings that keep the board from looking empty. Both meanings show up in the same search results, so this post answers both, then goes deep on the job-board one: how backfill feeds work, what they carry, who provides them, and how to backfill a board with an API and take closed roles down again.

## What does backfill mean in hiring?

In hiring, a backfill is a position opened to replace an employee who has left, been promoted or moved to another team, as opposed to net-new headcount that grows the team. A backfill requisition reuses the existing role, budget and usually the old job description, which is why backfill jobs tend to be approved and posted faster than new roles.

For anyone reading job postings as data, that has a visible side effect: a backfill often appears as a repost of a description the company has used before. Reposting on its own is not a red flag, but repeated reposting is one of the signals in the JobsPipe ghost score, so a board that ingests everything should expect some of its “new” listings to be old requisitions coming back.

## What is job board backfill?

Job board backfill is the practice of filling a job board with listings pulled from third-party sources, an aggregator API, an XML feed or a traffic exchange, so the board has inventory before and between direct employer posts. The term comes from the years when Indeed and SimplyHired supplied publisher feeds that most niche and WordPress boards ran on.

A backfilled listing is not the board’s own: the candidate clicks through to the source to apply, and the board earns either a per-click payment from the feed provider or nothing beyond the traffic and the credibility of a full board. Direct posts are exclusive and paid for by the employer. Every board that works runs both, backfill first to solve the cold start, direct posts layered on once employers can see an audience. The niche boards in [the best niche job boards](/blog/best-niche-job-boards) all follow that sequence.

## How backfill feeds work

There are three delivery shapes, and the choice affects everything downstream.

-   **XML feeds.** The classic format: one file, one `<job>` element per posting with a title, a reference number, a URL, the company, city, state, country, a date and a description. You fetch the whole file on a schedule and diff it against what you have. Simple, and it scales badly past a few thousand rows because there is no way to ask for only what changed.
-   **API pulls.** A JSON endpoint you query with filters and page through with a cursor. You ask for your niche (title phrases, country, posting age) and get back only matching rows, which is what makes a narrow board possible without downloading the market.
-   **Push.** Webhooks that tell you when something changed. Most useful for the event a pull cannot see cheaply: a posting closing.

Whatever the shape, four problems are yours unless the feed solves them. **Deduplication**: the same role is posted to the employer’s applicant tracking system, copied to LinkedIn and Indeed, and syndicated onward, so without a stable per-source id and a cross-source match your board shows one job three times. **Attribution**: affiliate feeds require that you link back to their page, and any feed is easier to debug when each row says where it came from; in the JobsPipe schema that is `sources[0].provider` next to the apply `url`. **Freshness**: a feed tells you when a posting was published, rarely when it closed, so you need either a posting-age cap or a source that tracks status. **Normalization**: salary, location and employment type arrive in a different phrasing per source, and how much of each field you get depends on the board it was collected from:

| Board | States a salary | Flagged remote | States a seniority |
| --- | --- | --- | --- |
| Y Combinator | 67.7% | 36.5% | 36.8% |
| Ashby | 56.1% | 24.9% | 39.0% |
| Greenhouse | 46.8% | 15.4% | 38.2% |
| Indeed | 36.8% | 3.9% | 17.9% |
| Workday | 23.3% | 5.6% | 32.9% |
| Lever | 22.7% | 45.5% | 29.6% |
| LinkedIn | 22.1% | 4.3% | 48.6% |
| Workable | 19.6% | 16.7% | 22.3% |
| Paylocity | 10.7% | 2.8% | 7.4% |
| SmartRecruiters | 5.3% | 3.8% | 26.3% |

How this was measured

Measured from active postings per collected board. Generated 2026-09-09. Shares only: JobsPipe publishes percentages, not counts.

Shares are computed within one board after per-posting dedup. A feed that backfills only from LinkedIn and Indeed inherits their salary and remote coverage; employer-direct postings from Ashby, Greenhouse and Lever carry more of both. Reproduce with `source_or`.

```
curl -X POST https://api.jobspipe.dev/v1/jobs/search \
  -H "Authorization: Bearer $JOBSPIPE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"source_or":["ashby","greenhouse","lever"],"min_salary_usd":1,"posted_at_max_age_days":30,"limit":25,"include_total_results":true}'
```

## Backfill providers compared

Two models exist. Affiliate and traffic-exchange feeds pay you per click or per application and in return the listing must link to their page, carry their branding rules and stay within their terms. Data APIs charge you and give you the record itself, to render, filter and link as you like. JobsPipe is the second kind, so weigh this section accordingly.

-   **Indeed.** The publisher feed that defined WordPress backfill is no longer open to new publishers. Settings named Indeed backfill in older themes should be treated as legacy.
-   **Adzuna, Careerjet, Jooble, Talent.com.** Aggregators with partner or affiliate APIs. Listings link back to the aggregator’s page, you earn per click, and the fields are the aggregator’s normalization of a copy of a copy. Good for revenue on a general board, weak on salary and remote signal for a niche one.
-   **Traffic exchanges such as Jobg8.** Sponsored inventory priced per click or per application. The listings are whatever employers are paying to distribute that week, which suits volume and not curation.
-   **JobsPipe.** A data API over LinkedIn, Indeed, Y Combinator and the applicant tracking systems companies post to directly, deduplicated into one schema with the source board on each row, posting status and a ghost score. Metered per job returned, free tier of 1,000 jobs a month, no per-click revenue back to you. The right fit when the board is the product and the fields matter; the wrong fit when you want the feed to pay for itself.

## How to backfill a job board with the JobsPipe API

One endpoint does the pull. Filter to the niche with title phrases and countries, cap the posting age so the first load is fresh, and page with the cursor until it comes back null:

```
curl https://api.jobspipe.dev/v1/jobs/search \
  -H "Authorization: Bearer $JOBSPIPE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "job_title_or": ["product designer", "ux designer"],
    "job_country_code_or": ["GB", "IE"],
    "posted_at_max_age_days": 14,
    "source_not": ["linkedin", "indeed"],
    "max_ghost_score": 49,
    "limit": 100
  }'
```

Store `id` together with `sources[0].provider` as the unique key, since ids are per source, and render `job_title`, `company`, `date_posted`, the salary fields where present, and the apply `url`. Use `source_not` when you want only employer-direct postings, and `max_ghost_score` to keep the likely ghost jobs off the board. Pass `metadata.next_cursor` back as `cursor` for the next page. On later runs, drop the age cap to one or two days and pull only what is new.

Taking roles down is the half of backfill most feeds cannot do. Send the ids you hold back with `status: "any"` and read the answer:

```
curl https://api.jobspipe.dev/v1/jobs/search \
  -H "Authorization: Bearer $JOBSPIPE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "job_ids": ["4412834261", "4412834262"],
    "source_or": ["linkedin"],
    "status": "any",
    "limit": 100
  }'
```

Rows come back with `status`, `closed_at`, `closed_reason`, `last_seen_at` and `verified_at`, so the board can unpublish a closed role the day it closes and show “last confirmed open” on the rest. Paid plans can register a webhook in the dashboard and receive the `job.closed` event instead, signed with HMAC-SHA256 over the timestamp and body in the `X-JobsPipe-Signature` header, and retried on anything but a 2xx. The plumbing around it, the schema, the listing page and the expiry logic, is in [the job board API guide](/blog/job-board-api-guide) and [how to build a job board](/blog/how-to-build-a-job-board); if the board runs on WordPress, the PHP version of this loop is in [WordPress job board plugins](/blog/wordpress-job-board-plugins).

Backfill a board with live, deduplicated postings - 30+ sources, source attribution on every row, free tier included.

![](/listly/shape-heart.png)

FAQs

## Frequently Asked Questions

### What does backfill mean in hiring?

In hiring, a backfill is a position opened to replace an employee who has left, been promoted or moved teams, as opposed to net-new headcount that grows the team. A backfill requisition reuses the existing role, budget and usually the old job description, so it is typically approved and posted faster than a new role, and it often appears as a repost of a description the company used before.

### What is job board backfill?

Job board backfill is filling a job board with listings pulled from third-party sources, an aggregator API, an XML feed or a traffic exchange, so the board has inventory before and between direct employer posts. Candidates click through to the source to apply. Boards use it to solve the cold start, then layer paid direct posts on top once employers can see an audience.

### How do job board backfill feeds work?

Three shapes: XML feeds you fetch whole and diff on a schedule, JSON APIs you query with filters and page through with a cursor, and webhooks that push changes such as a posting closing. Whatever the shape, the board still has to deduplicate the same role across sources, attribute each row to its source, cap or track freshness, and normalize salary, location and employment type.

### What is the difference between backfill and direct job postings?

Direct postings are submitted and usually paid for by the employer and are exclusive to the board. Backfilled postings come from a feed, link out to the source to apply, and earn the board either a per-click payment from an affiliate feed or nothing beyond traffic and a full-looking board. Most working boards run both.

### Which backfill providers are there?

Affiliate and partner aggregators such as Adzuna, Careerjet, Jooble and Talent.com, which pay per click and require a link back; traffic exchanges such as Jobg8, which distribute sponsored listings; and data APIs such as JobsPipe, which charge per job returned and give you the normalized record with its source board, status and ghost score. Indeed's publisher backfill is no longer open to new publishers.

### How do you backfill a job board with the JobsPipe API?

POST /v1/jobs/search with job\_title\_or, job\_country\_code\_or and posted\_at\_max\_age\_days for your niche, page with metadata.next\_cursor, and store each row under its id plus sources\[0\].provider. Add source\_not to keep only employer-direct postings and max\_ghost\_score to drop likely ghost jobs. To take roles down, send the ids back with status any and unpublish rows that return closed, or subscribe a webhook to job.closed on a paid plan.

[

← Previous

WordPress job board plugins in 2026: compared, and how to fill one with live postings

](/blog/wordpress-job-board-plugins)[

Next →

How Does MCP Work Under the Hood?

](/blog/how-does-mcp-work-under-the-hood)

---
Canonical URL: https://jobspipe.dev/blog/job-board-backfill
Title: Job board backfill: what backfill means in hiring, and how backfill feeds work
Description: Backfill has two meanings: in recruiting it is a replacement hire, on a job board it is third-party listings that keep the board full. How XML and JSON backfill feeds work, dedup and attribution, what each board's postings actually carry, backfill providers compared, and the API calls that backfill a board and take closed roles down again.

---
AI agents: the full machine-readable index of this site is https://jobspipe.dev/llms.txt?src=md-twin - API quickstart, no-key sandbox (POST https://api.jobspipe.dev/v1/sandbox/jobs/search), MCP server, pricing. Free key: https://jobspipe.dev/signup