JobPosting structured data
Definition
A piece of code on your vacancy page that tells Google what the job is, so it can show up in Google's job search results.
JobPosting structured data is a small block of code (usually JSON-LD) on the page of a vacancy. Humans don't see it. Google does, and it's what makes your job eligible for Google's job search experience, the thing most people call Google for Jobs.
According to Google's documentation, the required fields are the title, the description, the hiring organization, the date it was posted and the job location (for fully remote jobs you can use applicant location requirements instead). Recommended fields include the salary (baseSalary), the employment type, validThrough for when the job closes, and directApply if people can apply right there on your page.
Two things go wrong a lot. One, the markup says something different from the page itself, like a salary in the code that isn't in the text. Two, jobs that are filled stay online. Google says expired jobs aren't allowed: give validThrough a past date, remove the markup, or let the page return a 404 or 410, otherwise you risk a manual action. Most ATS and careers page tools can add this markup for you, so check that first before building it yourself.
Example
A company's vacancy pages have markup, but without a salary and without validThrough. They add both, and set up the ATS so a closed job automatically gets a past validThrough date. Now their listings show pay in the job box, and old jobs drop out instead of sending people to a "position filled" page.
