```yaml
product: AlterLab
title: "Schema.org — Web Scraping Glossary | AlterLab"
comparison_context: "AlterLab is an alternative to Firecrawl, ScrapingBee, and Bright Data."
source_url: https://alterlab.io/glossary/schema-org
```

format

# Schema.org

Schema.org is a collaborative vocabulary of structured data types used to annotate web content so search engines and automated tools can understand its meaning.

Schema.org was founded by Google, Bing, Yahoo, and Yandex in 2011 to create a shared vocabulary for describing web content. The vocabulary defines hundreds of types — `Product`, `Event`, `Recipe`, `JobPosting`, `Person`, `Organization`, and more — each with a standardised set of properties. Webmasters embed schema.org annotations in their pages using JSON-LD, Microdata, or RDFa markup.

For scrapers and data pipelines, schema.org annotations offer publisher-curated, semantically labelled data. A product page annotated with `schema.org/Product` reliably exposes fields like `name`, `description`, `sku`, `brand`, `offers`, and `aggregateRating` — without requiring per-site CSS selector maintenance.

The Google Rich Results documentation closely follows schema.org, so pages optimised for rich results are also optimised for structured scraping. Not all sites annotate their content, but e-commerce, news, events, and recipe sites have high adoption rates due to the SEO incentives.

### What is Schema.org?

Schema.org is a collaborative vocabulary of structured data types used to annotate web content so search engines and automated tools can understand its meaning.

### How does AlterLab handle Schema.org?

The Google Rich Results documentation closely follows schema.org, so pages optimised for rich results are also optimised for structured scraping. Not all sites annotate their content, but e-commerce, news, events, and recipe sites have high adoption rates due to the SEO incentives.

## Examples

```
# Extract schema.org Product data from JSON-LD
import json
from bs4 import BeautifulSoup

def get_product_schema(html):
    soup = BeautifulSoup(html, "html.parser")
    for tag in soup.find_all("script", type="application/ld+json"):
        try:
            data = json.loads(tag.string or "")
            if data.get("@type") == "Product":
                return data
        except json.JSONDecodeError:
            continue
    return None
```

## Related Terms

[JSON-LDJSON-LD is a W3C standard for embedding structured, machine-readable data inside an HTML page's script tags using JSON syntax and schema.org vocabulary.](https://alterlab.io/glossary/json-ld)[Open Graph ProtocolOpen Graph is a protocol that uses meta tags in an HTML page's head to define how a URL is displayed when shared on social media platforms.](https://alterlab.io/glossary/open-graph)[Structured Data ExtractionConverting free-form HTML into typed JSON records using explicit schemas, producing clean structured output instead of raw markup.](https://alterlab.io/glossary/structured-data-extraction)[SERPSearch Engine Results Page — the page returned by a search engine for a query, containing organic results, ads, and rich features.](https://alterlab.io/glossary/serp)[Data ExtractionThe process of identifying and pulling specific fields from raw web content, converting unstructured HTML into typed JSON records.](https://alterlab.io/glossary/data-extraction)

## Extract Schema.org data from any website

AlterLab returns clean, structured data from any public URL — no scraper infrastructure needed. Start free, no credit card required.

[View API docs](https://alterlab.io/docs/api/rest)

[Back to Glossary](https://alterlab.io/glossary)