
Element Code: RI-024
What Is This Issue?
"Datasets lack schema" means a page that is genuinely a dataset landing page, a CSV download, a government open-data record, an API endpoint with a data export, a research repository entry, has no structured data telling Google that. Without it, Google has to guess from the page's text and links whether this is a dataset at all. Most of the time it guesses wrong or just doesn't bother, and the page never shows up in Dataset Search or picks up a Dataset rich result in normal search.
Dataset schema is the schema.org/Dataset vocabulary, published as JSON-LD in the page head or body. It is a distinct type from Article, WebPage, or Product schema. If your page description says "download our 2025 emissions dataset" but there is no Dataset markup, Google is reading that as prose, not as a machine-readable claim that this URL is the canonical home of a dataset.
Why This Matters
Two separate payoffs here, and people conflate them constantly.
First, Dataset Search (datasetsearch.research.google.com). This is Google's dedicated vertical search engine for datasets, used by researchers, journalists, students, and increasingly by AI/ML teams looking for training or benchmark data. Per Google's Dataset structured data guidelines, the only reliable way into that index is Dataset schema. There is no organic ranking equivalent, if the markup isn't there or is broken, you are simply not eligible to appear, full stop.
Second, Dataset rich results in regular Google Search. When the markup validates, dataset pages can surface with an enhanced listing (title, provider, sometimes an explore-in-Dataset-Search link) directly in normal search results, not just the dedicated vertical. For a gov agency, university, or data.gov-style publisher, that is often the highest-intent traffic you get: someone searching for the exact dataset by name.
The audience that finds you through Dataset Search is narrow but valuable. Journalists doing data journalism, grad students needing raw data for a thesis, ML engineers scouting for training sets, policy analysts citing a source. These are backlink-generating, citation-generating visitors. A dataset that gets cited in a paper or a news story is doing more for your domain's authority than a blog post ever will, and none of that happens if the dataset was never discoverable in the first place.
Required vs Recommended Properties
Per Google's Dataset structured data documentation, the actual required field list is short, but "short" does not mean "skip everything else." The recommended fields are what separate a page that technically validates from a page that actually competes for visibility in a crowded Dataset Search index.
| Property | Required? | What it does |
|---|---|---|
name | Required | The dataset's title. Use a distinct, specific name, "2025 County Air Quality Readings" not "Data." |
description | Required | 50 to 5000 characters per Google's guidance. This is what shows in Dataset Search results, write it for a human, not just a keyword stuffer. |
url | Recommended | Canonical landing page for the dataset itself. |
distribution (DataDownload) | Recommended, contentUrl required within it | Where the actual file lives and what format it's in. This is the single most-skipped field and the one that actually lets someone get the data. |
creator | Recommended | Organization or Person who produced the dataset. Use ORCID for individual researchers, ROR ID for institutions where possible. |
license | Recommended | URL or CreativeWork pointing to the reuse terms. Missing this is one of the most common reasons a dataset gets ignored by downstream researchers. |
keywords | Recommended | Comma-separated terms describing the dataset's subject matter, boosts matching in Dataset Search queries. |
temporalCoverage | Recommended | ISO 8601 date range the data covers, e.g. 2020-01-01/2024-12-31. |
spatialCoverage | Recommended | Geographic scope, as a Place or plain text. Matters a lot for gov and regional datasets. |
isAccessibleForFree | Recommended | Boolean flag for whether the data is free to access. Set it honestly, don't mark paywalled data as free. |
includedInDataCatalog | Recommended | Links the dataset to a parent DataCatalog if it's part of a larger repository. |
citation | Recommended | Related academic work that should be cited alongside the dataset, not a self-citation. |
version | Recommended | Version identifier, useful when a dataset gets periodically updated or republished. |
How to Detect It
Check current state before you touch anything:
- Google's Rich Results Test (search.google.com/test/rich-results). Paste the URL, look specifically for a "Dataset" item type in the results. If it says no structured data detected, or detects a different type like WebPage, that confirms the gap.
- Schema Markup Validator (validator.schema.org). This is the general schema.org validator, not Google-specific, useful for checking the raw JSON-LD is syntactically correct and all nested types (DataDownload, Organization) resolve properly.
- Search Console. Once markup is live, the Enhancements section eventually reports Dataset-eligible pages and any errors Google's crawler hit. This takes time to populate, don't expect same-day feedback.
- Check Dataset Search directly. Search your dataset's name or a close variant at datasetsearch.research.google.com. If it's not indexed after a few weeks of valid markup and a few crawls, something in the implementation is likely still wrong, or the page hasn't been recrawled yet.
How to Implement It
Add a JSON-LD script block to the dataset's landing page, in the head or body. Here's a working structure with the pieces that actually matter, not a stub:
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Dataset",
"name": "2025 County Air Quality Readings",
"description": "Hourly PM2.5 and ozone readings collected from 42 monitoring stations across the county, January through December 2025. Includes station metadata and calibration notes.",
"url": "https://example.gov/data/air-quality-2025",
"sameAs": "https://doi.org/10.1234/example-air-quality-2025",
"identifier": "https://doi.org/10.1234/example-air-quality-2025",
"keywords": ["air quality", "PM2.5", "ozone", "environmental monitoring"],
"creator": {
"@type": "Organization",
"name": "County Environmental Health Department",
"url": "https://example.gov"
},
"license": "https://creativecommons.org/licenses/by/4.0/",
"isAccessibleForFree": true,
"temporalCoverage": "2025-01-01/2025-12-31",
"spatialCoverage": {
"@type": "Place",
"name": "Example County, State"
},
"includedInDataCatalog": {
"@type": "DataCatalog",
"name": "County Open Data Portal",
"url": "https://example.gov/data"
},
"distribution": [
{
"@type": "DataDownload",
"encodingFormat": "CSV",
"contentUrl": "https://example.gov/data/air-quality-2025.csv"
},
{
"@type": "DataDownload",
"encodingFormat": "application/json",
"contentUrl": "https://example.gov/data/air-quality-2025.json"
}
],
"version": "1.2"
}
</script>Notes on that example: the distribution field is an array because most real datasets ship in more than one format, don't force yourself into a single DataDownload if you offer CSV and JSON both. The contentUrl inside each DataDownload has to actually resolve, a 404 or a redirect chain there is a fast way to get flagged during validation.
Once it's live, run it through the Rich Results Test before you move on. Fix any critical errors it flags. Warnings for missing recommended fields are worth addressing but won't block eligibility the way an error will.
- Include a working
contentUrlfor every DataDownload, test each link manually. - Write a real, specific description, this is what shows up in search results.
- Add
license, missing licensing is the top reason researchers skip a dataset. - Use ISO 8601 for
temporalCoverageso it parses correctly. - Re-validate after every content update, especially when a new file version drops.
- Slap Dataset schema on a blog post that merely discusses a dataset, that's not what the page is.
- Leave
contentUrlpointing at a login-gated page with no actual download. - Copy-paste a generic description across dozens of datasets, Google and users both notice.
- Mark
isAccessibleForFree: truewhen the data sits behind a paywall. - Forget to update
temporalCoverageandversionwhen the dataset gets refreshed.
Common Mistakes
The most frequent failure isn't bad syntax, it's scope. Teams apply Dataset schema to a category page listing twelve different datasets, or to a blog post that references a dataset without hosting one. Dataset schema belongs on the specific landing page for one specific dataset. If you've got a catalog of datasets, that catalog page gets DataCatalog schema, and each individual dataset gets its own Dataset markup on its own URL.
Second most common: no distribution, or a distribution with a broken or paywalled contentUrl. Google's guidance is explicit that this field matters for real usability, a Dataset entry that doesn't actually lead to downloadable data is a dead end for anyone who finds it through Dataset Search.
Third: missing or vague license. Anyone doing serious research or building on top of open data needs to know the reuse terms before they touch the file. If you don't specify a license, plenty of legitimate users will just skip your dataset rather than guess at what they're allowed to do with it.
Fourth: treating this as a one-time task. Datasets that get periodically updated need their markup updated too, stale temporalCoverage or a version that never changes tells both Google and researchers this page might not reflect current data.
What Good Looks Like
A well-marked-up dataset page has a specific, human-written description in the 50 to 5000 character range, a creator with a real identifier, a license that's unambiguous, at least one distribution with a contentUrl that actually downloads a file, and coverage fields (temporal, spatial) filled in accurately rather than left blank. It validates clean in the Rich Results Test with zero errors, shows up in Dataset Search within a few weeks of being crawled, and gets kept current every time the underlying data changes. That's the bar, not "the JSON-LD is present," but "someone could find this, understand what it is, trust the license, and actually get the file."
FAQ
Does Dataset schema help my normal SEO rankings, not just Dataset Search?
Can I use Dataset schema for an API instead of a downloadable file?
How long until a dataset shows up in Dataset Search after I add the markup?
Do I need a DOI or ORCID for the creator field?
What if my dataset is behind a login or paywall?
If your site publishes data, research, or downloadable resources at scale, a one-off schema fix rarely covers the whole picture. Get a full technical and structured data review from seoprocheck's advanced SEO audit.
Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.
About SEO ProCheck
Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.
Work With Me
Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.







