
Job Metadata: What's Inside Every Job Posting
Beyond the job description text, every posting carries dozens of structured metadata fields - dates, location, salary, employment type, skills, and more besides.
What Is Job Metadata?
Job metadata is the structured, machine-readable data extracted from a job posting - separate from the free-text job description itself. Whenever Techmap collects a posting from an ATS career page, job board, or employment office - or via our own job crawlers, it does not merely store the raw text: it identifies and normalises dozens of individual fields, such as the company name, publish date, location, employment type, salary, and required skills.
This matters because raw job posting text is, by its very nature, unstructured and inconsistent across sources: one site might write "Remote" in the title, another in a dedicated field, and a third not at all. Metadata normalises these signals into consistent fields (such as job.workPlace), so they can be filtered, counted, and compared across sources, countries, and companies without re-parsing the text for every single query.
Why Job Metadata Matters
- Filtering and search: query postings by
countryCode,workPlace,careerLevel, ordateCreated, rather than scanning the description text. - Deduplication: the
isDuplicateandisDuplicateOfflags let you exclude re-published copies of the very same posting. - Source quality: the
isDirectflag distinguishes employer-direct postings (career pages) from job board republications. Do note, however, that the job board copy is very often the only copy available online at all - not every hiring company runs a website of its own, let alone a proper careers page. - Sales and market intelligence: company, location, and industry metadata power sales lead generation and labour market analysis, without the need for any manual text mining.
- Structured data / SEO: the
job.jsonLDobject follows the schema.org JobPosting format and may be embedded directly on a job board page for Google Jobs eligibility.
Job Metadata Fields
The table below groups Techmap's actual API field names (from the result[] array of the Job API's Data Dictionary) according to the kind of metadata they capture. Every field name and example value shown here is taken directly from the live schema - please see the full field reference for types and population rates.
Identification & Role Metadata
What the position is and where it sits within the company.
| Field | Example | Description |
|---|---|---|
| title | SAP TM (Transportation Module) Functional Analyst | Title or name of the job posting |
| occupation | Functional Analyst | The job name reduced to a stem form (e.g., 'java programmer') |
| department | IT | Name of the department in the company such as sales, finance, it, ... (very rare) |
Company Metadata
Who is hiring, resolved from the posting page or its embedded JSON.
| Field | Example | Description |
|---|---|---|
| company | Avance Consulting | Name of the company originally stated on the job posting or in its JSON. |
| jsonLD.hiringOrganization .name | Avance Consulting | Name of the company originally stated on the job posting or in its JSON. |
| jsonLD.hiringOrganization .url | https://example.com | Website of the company originally stated on the job posting or in its JSON. |
| jsonLD.hiringOrganization .logo | https://s3.eu-central-1.amazonaws.com/images.techmap.io/dice_us-d865fc5a-e0ad-57a6-9e0f-45350b82af37-logo.png | Link to Logo of the company cached by techmap. |
| jsonLD.hiringOrganization .identifier | 5e1e4a2d824199645bd7e6a8 | ID of the company in Techmap's central database. |
Freshness & Timing Metadata
When the posting was created and how long it's assumed to stay valid.
| Field | Example | Description |
|---|---|---|
| dateCreated | 2024-09-15T14:43:24.000Z | The date and time the job posting was created by the company (as stated on the page or its JSON). |
| dateExpired | 2024-10-14T14:48:29.000Z | The given date the posting is valid. |
| dateActive | 2024-10-14T14:48:29.000Z | The assumed expiry date of the posting, derived from schema.org validThrough or defaulting to dateCreated + 30 days. |
| jsonLD.datePosted | 2024-09-15T14:43:24.000Z | The date and time the job posting was created by the company (as stated on the page or its JSON). |
| jsonLD.validThrough | 2024-10-14T14:48:29.000Z | The given date the posting is valid. |
Location Metadata
Where the role is based, down to coordinates and timezone.
| Field | Example | Description |
|---|---|---|
| countryCode | us | The country code (from ISO3166) the job posting is located, e.g., 'us'. |
| state | TX | State the job is located in (rare). |
| city | Cleveland | City the job is located in. |
| postCode | 77327 | Postal or Zip code of the job is located in (rare). |
| geoPoint | {"lon": -95.02362, "lat": 30.33804} | The geocoordinate object with latitude and longitude. |
| timezone | CST | Timezone code (3-letters) |
| timezoneOffset | -6 | Timezone offset between -12 and +12 from GMT/UTC |
Employment Metadata
How the role is structured - onsite or remote, seniority, contract and work type.
| Field | Example | Description |
|---|---|---|
| workPlace | ["Onsite"] | List of workplaces such as Remote, Hybrid, Onsite, Field, ... |
| careerLevel | ["Senior"] | List of career levels such as Junior, Senior, ... |
| contractType | ["DirectEmployment"] | List of contract types such as Permanent, Temporary, ... |
| workType | ["Permanent"] | List of work types such as Fulltime, Parttime, ... |
| jsonLD.employmentType | Direct Employment | The main employment type such as Permanent, Temporary, ... |
Compensation Metadata
Salary information, where the original posting discloses it.
| Field | Example | Description |
|---|---|---|
| hasSalary | True | Indicates if the job posting has salary information. |
| minSalary | 50000.00 | The minimum salary of the position. |
Classification Metadata
What the role is about and in which language it's written.
| Field | Example | Description |
|---|---|---|
| skills | ["Logistics","Autoconf","ABAP"] | The skills stated or identified with the job posting |
| industry | Transport | The industry stated or identified with the job posting |
| language | en | Language the job posting is written in such as en, es, de, ... |
| locale | en_US | The Locale of the job posting such as en_US, en_UK, de_CH, ... |
Quality & Provenance Metadata
Where the posting came from and how trustworthy or unique it is.
| Field | Example | Description |
|---|---|---|
| isDirect | True | Indicates if the job posting is directly from a company page or a job board. |
| isRecruiter | False | Indicates if the job posting is from a Recruiting firm. |
| isDuplicate | False | True if a posting with the same company, city, country, and job title was already seen within 3 days. Duplicates are kept but flagged. Use isDuplicate=false as a query filter to exclude them. |
| isDuplicateOf | 66f4d794a315a1138e6bfac2 | The ID of the earliest identical posting this one duplicates. Null when isDuplicate is false. |
| portal | dice | The origin of the job posting such as monster, linkedin, ... |
| source | dice_us | The origin of the job posting with a countrycode such as 'monster_uk'. |
Job Metadata in a Full API Response
Below is a complete, genuine example from the Job Posting API's /search endpoint: one posting with all of its metadata fields populated, including the jsonLD object in schema.org format.
{
"api": "Techmap.io Job Posting API",
"apiVersion": "v2.6",
"page": 1,
"pageSize": 10,
"totalCount": 1069346,
"result": [
{
"occupation": "Functional Analyst",
"dateActive": "2024-10-14T14:48:29.000Z",
"city": "Cleveland",
"timezone": "CST",
"contractType": ["DirectEmployment"],
"language": "en",
"industry": "Transport",
"isDuplicate": false,
"isDuplicateOf": null,
"isDirect": false,
"isRecruiter": false,
"hasSalary": false,
"jsonLD": {
"identifier": "66f4d794a315a1138e6bfac2",
"validThrough": "2024-10-14T14:48:29.000Z",
"employmentType": "Direct Employment",
"@type": "JobPosting",
"salaryCurrency": "USD",
"description": "**Job Description:** ...",
"industry": "Transport",
"title": "SAP TM Functional Analyst",
"@context": "https://schema.org",
"url": "https://www.dice.com/job-detail/003170f7-bd59-45d5-a0cf-e4ef93c27419",
"relevantOccupation": "Functional Analyst",
"skills": ["Logistics", "SAP TM", "ABAP"],
"hiringOrganization": {
"@type": "Organization",
"name": "Example Corp",
"url": "https://example.com"
},
"jobLocation": {
"address": {
"addressCountry": "United States",
"@type": "PostalAddress",
"addressLocality": "Cleveland",
"addressRegion": "TX"
},
"@type": "Place",
"latitude": 30.33804,
"longitude": -95.02362
},
"datePosted": "2024-09-15"
},
"source": "dice_us",
"locale": "en_US",
"geoPoint": { "lon": -95.02362, "lat": 30.33804 },
"title": "SAP TM Functional Analyst",
"skills": ["Logistics", "SAP TM", "ABAP"],
"dateCreated": "2024-09-15T14:43:24.000Z",
"timezoneOffset": -6,
"countryCode": "us",
"company": "Example Corp",
"state": "TX",
"portal": "dice",
"workPlace": ["Onsite"],
"careerLevel": ["N/A"],
"workType": ["N/A"],
"postCode": "77327"
}
],
"resultSizeInBytes": 59203
}This is the very same example as used in the Job API Overview's Data Dictionary.
References
- Job API Overview - Data Dictionary - the complete, unabbreviated field reference with types and population rates
- Job Posting API - product overview and API access
- Job Data Overview - the equivalent field schema for bulk Data Feeds and Historical Datasets
- Developer Guide - query parameters, code examples, and pagination
- Job Data Glossary - definitions for ATS Career Page, isDirect, Data Schema, and 40+ related terms
- Portal Explorer - all 195+ sources these metadata fields are collected from
Frequently Asked Questions
What is job metadata?
Job metadata is the structured data attached to a job posting, beyond its free-text description - fields such as the company, publish date, location, salary, employment type, and skills, extracted and normalised from the original posting page. It is what allows you to filter, sort, and query job postings without having to parse the raw text yourself.
What metadata fields does Techmap's API return for each job posting?
Techmap's Job Posting API returns over 30 job-level metadata fields per posting, covering identification (title, occupation, department), company, timing (dateCreated, dateActive, dateExpired), location (countryCode, city, geoPoint, timezone), employment type (workPlace, careerLevel, contractType, workType), compensation, skills, and provenance flags (isDirect, isDuplicate, portal, source). Please see the full field reference on the Job API Overview page.
How is job metadata different from the job description text?
The free-text job description lives in job.jsonLD.description as Markdown. Metadata fields such as job.workPlace, job.careerLevel, or job.countryCode are, by contrast, separately extracted, normalised structured values, so you may filter and group postings (e.g. remote jobs in a given country) without parsing or NLP-processing the description text yourself.
Is Techmap's job metadata based on schema.org?
Yes, indeed. The job.jsonLD field returns the posting's metadata as a schema.org JobPosting object (@type: JobPosting), including hiringOrganization and jobLocation sub-objects. It may be embedded directly on a webpage as structured data markup for job search engines.
Can I query job postings using only metadata filters, without the full text?
Yes, of course. The /search endpoint accepts metadata filters such as countryCode, isDirect, workPlace, careerLevel, and dateCreated as query parameters, so you may retrieve precisely the postings you need without ever touching the description field. Please see the Developer Guide for the full parameter list.
Questions? Contact us if something is unclear or if you want sample data.