Skip to main content

Confirm

Are you sure?

Glossary

JSON-LD

The machine-readable facts a page states about itself, in a block of JSON.

By · Last updated: September 2026

TL;DR

JSON-LD (JSON for Linked Data) is a W3C format for structured data that a page embeds in a <script type="application/ld+json"> tag, usually describing itself with schema.org types such as Article, Product or Organization. Search engines read it for rich results; it is Google's recommended structured-data format.

Free plan, no credit card. 1,000 credits a month.

How it works

What it looks like

An Article, in JSON-LD
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "How we cut our build time in half",
  "author": { "@type": "Person", "name": "Ada Lovelace" },
  "datePublished": "2026-09-01",
  "image": "https://example.com/og/build-time.png"
}
</script>

@context says the vocabulary is schema.org; @type says what the thing is; the rest are that type's properties. A page can hold several blocks, or one @graph that links many entities. Because it is a separate block, it can be added without touching the visible markup — the reason it displaced Microdata and RDFa.

In practice

Where it shows up

Google uses it for rich results — review stars, product prices, recipe cards, breadcrumbs, FAQ answers — and says it can read JSON-LD that JavaScript injects, once the page is rendered. Many other consumers read only the source. It is often the one place a page states its author or first publication date in a form a program can trust.

The types that matter most for web pages are Article and BlogPosting, Product with an Offer, Organization, BreadcrumbList, FAQPage and Recipe. Google's guidelines require the markup to describe content that is visible on the page; structured data that claims a price, a rating or an author the visitor can't see is a reason for a manual action, not a rich result.

URLpipe

Extracting it with URLpipe

/meta reads JSON-LD as one of its sources: the author name, the datePublished and the image all fall back to it. It returns the fields, not the graph. For the JSON-LD itself, fetch the rendered page from /html — which includes blocks JavaScript inserted — and parse the script tags:

Every JSON-LD block on a page
import json, requests
from bs4 import BeautifulSoup

html = requests.post(
    "https://urlpipe.dev/html",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={"url": "https://example.com/blog/build-time", "sync": True},
).text

blocks = [
    json.loads(tag.string)
    for tag in BeautifulSoup(html, "html.parser").find_all("script", type="application/ld+json")
    if tag.string
]
print([b.get("@type") for b in blocks])

FAQ

Frequently asked questions

Is JSON-LD better than Microdata?
For most sites, yes: it is separate from the markup, easier to generate and maintain, and the format Google recommends. Both express the same schema.org vocabulary.
Does JSON-LD help SEO?
It makes pages eligible for rich results and helps search engines understand them. It is not a ranking boost on its own.
Can JSON-LD be added with JavaScript?
Google can read it after rendering, but consumers that only read the HTML source won't see it. Server-render it when you can.

See it on your own pages.

Free plan, no card. Confirm your email and your API key is live — you'll be making real requests in minutes.