Dataset Schema

No Comments
Dataset schema

Element Code: RI-024

TL;DR: Dataset schema is JSON-LD markup (schema.org/Dataset) that tells Google a page is a downloadable or queryable dataset, not just an article about data. Add it correctly and the page becomes eligible for Google Dataset Search and for Dataset rich results in normal search, which matters a lot if you run a gov, research, or open-data site where "download the CSV" is the actual conversion event.
TYPE
schema.org/Dataset (JSON-LD)
BEST FOR
Gov data, research repos, APIs, CSV/spreadsheet downloads
GOOGLE SURFACE
Dataset Search + Dataset rich result
DIFFICULTY
Low to moderate
REQUIRED FIELDS
name, description (distribution/contentUrl strongly recommended)

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.

Dataset JSON-LD name, description, distribution, license

Google crawls and validates the markup

Google Dataset Search datasetsearch.research.google.com indexed and browsable

Dataset rich result enhanced listing in normal Google Search

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.

PropertyRequired?What it does
nameRequiredThe dataset's title. Use a distinct, specific name, "2025 County Air Quality Readings" not "Data."
descriptionRequired50 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.
urlRecommendedCanonical landing page for the dataset itself.
distribution (DataDownload)Recommended, contentUrl required within itWhere 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.
creatorRecommendedOrganization or Person who produced the dataset. Use ORCID for individual researchers, ROR ID for institutions where possible.
licenseRecommendedURL or CreativeWork pointing to the reuse terms. Missing this is one of the most common reasons a dataset gets ignored by downstream researchers.
keywordsRecommendedComma-separated terms describing the dataset's subject matter, boosts matching in Dataset Search queries.
temporalCoverageRecommendedISO 8601 date range the data covers, e.g. 2020-01-01/2024-12-31.
spatialCoverageRecommendedGeographic scope, as a Place or plain text. Matters a lot for gov and regional datasets.
isAccessibleForFreeRecommendedBoolean flag for whether the data is free to access. Set it honestly, don't mark paywalled data as free.
includedInDataCatalogRecommendedLinks the dataset to a parent DataCatalog if it's part of a larger repository.
citationRecommendedRelated academic work that should be cited alongside the dataset, not a self-citation.
versionRecommendedVersion identifier, useful when a dataset gets periodically updated or republished.

How to Detect It

Check current state before you touch anything:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

DO

  • Include a working contentUrl for 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 temporalCoverage so it parses correctly.
  • Re-validate after every content update, especially when a new file version drops.
DON'T

  • Slap Dataset schema on a blog post that merely discusses a dataset, that's not what the page is.
  • Leave contentUrl pointing 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: true when the data sits behind a paywall.
  • Forget to update temporalCoverage and version when 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?
It can contribute to a Dataset rich result appearing in regular Google Search for that specific dataset page, which is a visibility boost, but it isn't a general ranking signal the way page speed or backlinks are. Think of it as enabling a specific result type, not a broad ranking multiplier.
Can I use Dataset schema for an API instead of a downloadable file?
Yes. The distribution field accepts a URL to an API endpoint as a DataDownload, and Google's documentation covers machine learning artifacts and structured data more broadly, not just static CSV files. Just make sure the endpoint is publicly reachable and documented.
How long until a dataset shows up in Dataset Search after I add the markup?
There's no fixed SLA. It depends on crawl frequency for your domain and whether the markup validates cleanly the first time. Weeks is typical, not days. If it's been over a month with clean validation and no indexing, check Search Console for reported errors first.
Do I need a DOI or ORCID for the creator field?
No, they're not required, but Google's guidance recommends them where available since they disambiguate who actually created the data. A plain Organization or Person name with a URL is a valid fallback if you don't have formal identifiers.
What if my dataset is behind a login or paywall?
You can still mark it up, just set isAccessibleForFree to false and make sure the license and access terms are described accurately. Don't mark restricted data as free just to look more open, that's a fast way to erode trust with anyone who tries to download it.
Want a full structured data audit, not just Dataset schema?

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.

Get an 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.

Subscribe to our newsletter!

More from our blog