Internship & Contract Role Job Posting Schema Markup (JSON-LD)
Structured data for university internships, seasonal apprenticeships, fixed-term contract roles, direct apply links, qualifications, and mentoring responsibilities.
Displayed below main page header or above the tool container. • Zero CLS Container
Production JSON-LD Code Block
Embed this structured data block directly into your HTML <head> or framework layout template.
{
"@context": "https://schema.org",
"@type": "JobPosting",
"title": "Software Engineering Summer Intern (AI & Search)",
"description": "<p>12-week paid summer internship program for undergraduate and graduate computer science students.</p>",
"datePosted": "2026-10-01T09:00:00Z",
"validThrough": "2026-12-01T23:59:59Z",
"employmentType": "INTERN",
"directApply": true,
"hiringOrganization": {
"@type": "Organization",
"name": "OmniSEOTools Labs",
"sameAs": "https://omniseotools.com"
},
"jobLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "500 Howard Street",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94105",
"addressCountry": "US"
}
},
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": {
"@type": "QuantitativeValue",
"value": 55,
"unitText": "HOUR"
}
}
}Typed Properties Specification (9 Fields)
Key Schema.org properties and sub-objects required to qualify for rich snippet treatment in Google Search.
| Property | Expected Type | Status | Description & Example |
|---|---|---|---|
| title | string | Required | Job title identifying the internship or contract classification. e.g. Software Engineering Summer Intern (AI & Search) |
| employmentType | string | Required | Must be set to 'INTERN' or 'CONTRACTOR'. e.g. INTERN |
| directApply | boolean | Required | Signals that candidate applications can be submitted directly on the target URL without third-party redirection. e.g. true |
| datePosted | string (ISO 8601) | Required | Date the internship posting opened. e.g. 2026-10-01T09:00:00Z |
| validThrough | string (ISO 8601) | Required | Internship application deadline. e.g. 2026-12-01T23:59:59Z |
| hiringOrganization | Organization | Required | Company sponsoring the internship or contract. e.g. { '@type': 'Organization', 'name': 'OmniSEOTools Labs' } |
| jobLocation | Place | Required | Workplace location. e.g. { '@type': 'Place', 'address': { ... } } |
| baseSalary | MonetaryAmount | Recommended | Hourly compensation rate for student interns. e.g. { '@type': 'MonetaryAmount', 'currency': 'USD', 'value': { 'value': 55, 'unitText': 'HOUR' } } |
| description | string (HTML) | Required | Full description of internship curriculum, mentors, and learning objectives. e.g. <p>12-week paid summer internship program.</p> |
Google Search Console Pitfalls & Critical Warnings
Avoid these 3 common validation traps, parser errors, and algorithmic policy penalties when deploying JobPosting schema.
Misrepresenting Unpaid Roles as Paid Positions
Omitting salary or implying monetary compensation for unpaid academic internships.
Accurately declare baseSalary or clearly state unpaid status in description.
False directApply Claim
Setting directApply: true when the application link forces users through multiple ad-gated redirect loops.
Set directApply: true only if the user lands directly on an in-page application form.
Using Free-text Employment Types
Writing 'Intern' or 'Summer Student' instead of the standardized enum 'INTERN'.
Use standard enum values: FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN.
Recommended Implementation Scenarios
Related Schema Blueprints
Explore complementary structured data blueprints across the Events & Education cluster.
Full-Time Job Posting & Career Schema Markup (JSON-LD Blueprint)
100% Remote Work Job Posting Schema Markup (JSON-LD)
College Degree & Academic Program Schema Markup (JSON-LD)
Educational Credential & Digital Badge Schema Markup (JSON-LD)
Displayed below main page header or above the tool container. • Zero CLS Container