# Techmap

> What does Techmap contribute, and when does BetterJobs route to it?

Source: https://docs.betterjobs.cc/providers/techmap/

Techmap (jobdatafeeds.com) sells high-volume job feeds from ATSs, job boards and public employment offices. BetterJobs uses it as one of six partner providers.

Techmap

`techmap`

High-volume job feeds from ATSs, job boards and public employment offices (jobdatafeeds.com).

- Sources

  200+ sources incl. 120 ATSs and 28 public employment offices

- New postings

  About 8M per month

- History

  451M+ postings since 2020

- Countries

  Claims 250 countries (about 125 with more than 100 jobs per month)

- Feeds

  Daily country feeds via AWS Data Exchange

- API

  $1 per 1k jobs; /count endpoint estimates cost

Growth includes 2 partner providers; Pro and above include all six. GET /v1/providers shows what your plan enables.

Facts per Techmap (jobdatafeeds.com).

## What it is strong at

All facts in this section are per Techmap (jobdatafeeds.com).

- **Volume.** About 8M new postings per month, and 451M+ postings since 2020.
- **Source mix.** 200+ sources, including 120 ATSs and 28 public employment offices.
- **Country reach.** It claims 250 countries, about 125 of them with more than 100 jobs per month.
- **Cheap bulk.** API at $1 per 1k jobs, with a `/count` endpoint to estimate cost first.
- **Formats.** json, csv, rss and parquet, plus daily country feeds via AWS Data Exchange.

## What it contributes to a BetterJobs job

Techmap’s field names next to ours, where there is a confident equivalent:

| BetterJobs        | Techmap        |
| ----------------- | -------------- |
| `employment_type` | `contractType` |

What Techmap filled on a given job is in that job’s `sources[]` entry for `techmap`, under `fields`. In the spec’s illustrative example, Techmap supplied `job_family` to a job the BetterJobs index found first.

## Refresh

Per Techmap, its bulk product is daily country feeds via AWS Data Exchange. On each BetterJobs job, the `techmap` entry in `sources[]` carries `first_seen_at` and `last_seen_at` for that source.

## Notes and quirks we normalize

### Thin countries

Per Techmap, it claims 250 countries but about 125 have more than 100 jobs per month. In the rest, expect few or no Techmap hits. That is not an error. A search there returns what the other sources found, and an empty search is free.

Check what Techmap added on each search: `metadata.providers.hit` says whether it matched, and `metadata.providers.contributions.techmap` counts unique jobs it contributed first. We do not publish per-country coverage numbers yet; they are published at GA.

### isDuplicate rows become one job

Per Techmap’s field reference, records carry an `isDuplicate` flag. BetterJobs merges every record for the same opening, from Techmap and from the other providers, into one [canonical job](https://docs.betterjobs.cc/concepts/canonical-jobs.md). Merged copies are free and counted in `metadata.duplicates_merged`.

### /count becomes dry\_run

Techmap’s `/count` endpoint estimates cost before you fetch. The BetterJobs equivalent is `dry_run: true` on [Search jobs](/api/operations/searchjobs/). It is free and returns `expected_unique_jobs_range`, `providers_planned` and `credits_range`.

### Fields we do not pass through

Per Techmap’s field reference, records include `dateActive`, `jsonLD` (schema.org JobPosting) and `workPlace`. BetterJobs does not return them as-is. Every job uses the same BetterJobs timestamps instead (`posted_at`, `first_seen_at`, `last_seen_at`, `last_verified_at`), whichever source saw it. `contractType` maps to `employment_type`. See the [field dictionary](https://docs.betterjobs.cc/data/field-dictionary.md).

> Different billing unit
>
> Per Techmap, its own API lists $1 per 1k jobs. A BetterJobs credit is a different unit: 1 credit per unique merged job, priced by plan. Duplicates and empty searches are free. See [Credits and billing](https://docs.betterjobs.cc/concepts/credits-and-billing.md).

The query translation is in [Migrate from Techmap](https://docs.betterjobs.cc/guides/migrate-from-techmap.md).

## When BetterJobs routes to it

Only when Techmap is enabled on your plan. Then:

- `max_coverage` asks it on every search.
- `cheapest_first` asks it only if the BetterJobs index and earlier sources did not fill the page.
- `waterfall.providers: ["betterjobs", "techmap"]` pins it.

Check `metadata.providers.tried` and `metadata.providers.hit` to see whether it was asked and matched.

## Plans that include it

Growth includes 2 partner providers; Pro and above include all six. GET /v1/providers shows what your plan enables. See the [plan table](https://docs.betterjobs.cc/providers.md#which-plan-includes-which-provider).

## Provider docs

[Techmap (jobdatafeeds.com) ↗](https://jobdatafeeds.com)

## Related

- [Migrate from Techmap](https://docs.betterjobs.cc/guides/migrate-from-techmap.md)
- [All providers](https://docs.betterjobs.cc/providers.md)
- [Canonical jobs](https://docs.betterjobs.cc/concepts/canonical-jobs.md)
