Zyte API AI Extraction

Turn pages into structured data - no parsers, no selectors

End the pain of parsing. Let AI understand the page and extract the data for you.

This is an image of ai data extraction from a product website

The hidden cost of writing parsers

Death by DOM

Identifying and testing XPath or CSS selectors is slow and repetitive.

Error-prone

Fragile selectors break when site markup changes.

Slow to scale

Scraping dozens of sites means never-ending maintenance.

Pick your AI superpower

1. Broad

Instant extraction from any page

Just get the data. One parameter is all you need. "pageContent": true is your key to instantly extract the main content of any page. No selectors in sight, no HTML to clean up – just clean, slim-line content, ready for LLMs or any use case.

1{
2  "httpResponseBody": true,
3  "pageContent": true
4}
5
6def parse(self, response):
7    http_response_body: bytes = response.body
8    with open("http_response_body.html", "wb") as fp:
9        fp.write(http_response_body)
10    page_content = response.raw_api_response["pageContent"]
11    yield page_content
Copy

2. Specialist

Rich, content-specific schemas

Zyte API uses machine learning models to identify and return standard data schema from a range of specific data types such as Product, Article, Job Posting, Search Engine.

  • Product: Instant extraction from ecommerce web pages. Common fields: Name, Price, Currency, Description, Images, Specifications. Read the docs
  • Article: Unlock the intelligence in news content. Common fields: Headline, Article body, Page number, URL, Date published, Date modified, Breadcrumbs. Read the docs
  • Job Posting: Gather key components from every job ad. Common fields: Job title, Base salary, Job location, Description, Employment type. Read the docs
  • Search Engine: Extract and rank organic live results. Common fields: Organic results, URLs, Page number, Metadata. Read the docs

Product

Product
1{
2  "name": "StoneShoesbasket",
3  "product": "Stoneshoes",
4  "price": "149",
5  "currency": "USD",
6  "currencyRaw": "$",
7  "regularPrice": "199.00",
8  "availability": "InStock",
9  "sku": "A123DK9823",
10  "mpn": "code-123",
11  "gtin": [],
12  "brand": {},
13  "breadcrumbs": [],
14  "mainImage": {},
15  "images": [],
16  "description": "product description",
17  "descriptionHtml": "<article>HTML description for Product ...",
18  "aggregateRating": {},
19  "color": "Red",
20  "size": "XL",
21  "weight": {},
22  "material": "Metal, Plastic",
23}
Copy
3. Magic

Ask for any field, get it back structured

Our most powerful capability, custom attributes extraction, puts a scraping-tuned Large Language Model behind every request.

  • Extract mode: No more selectors. Use natural language to instruct Zyte API to find and return custom on-page data.
  • Generate mode: Go beyond language-based extraction. Summarize, transform or translate captured data before it is even returned.
1{
2  "pockets": {
3    "type": "integer",
4    "description": "What is the number of pockets in this garment?"
5  }
6}
Copy
See it in action

Add AI Extraction to your first request

Built to work the way you do

AI Extraction drops into your existing Zyte API workflows.

Plays well with Scrapy

Use AI Extraction directly inside your Scrapy spiders with no extra parsing logic — just one parameter in your request and the data arrives structured.

Domain-trained models

Specialized AI models for ecommerce products, articles, jobs, and search engine results ensure accuracy and efficiency.

Flexible schema

Get common fields by default, then customize the schema to fit your needs. Add or remove fields with either code or natural language prompts.

Low-maintenance parsing

Forget fixing brittle selectors when sites change — our AI adapts automatically to evolving page structures.

Simple pricing that scales with your needs

Awards, five-star reviews and millions of happy customers

The results are in: Zyte customers love our products. Check out these views and reviews on independent sites.

It just works

Zyte was able to offer the most simple and effective rotating proxy solution for us. It just works.

Aurélien JemmaCEO at Liwango
Deploy in minutes

Quick to Integrate, Easy to Use.

Add AI Extraction to any request with a single parameter

Standard schemas

1import requests
2
3api_response = requests.post(
4    "https://api.zyte.com/v1/extract",
5    auth=("YOUR_ZYTE_API_KEY", ""),
6    json={
7        "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
8        "product": True,
9    },
10)
11product = api_response.json()["product"]
Copy

Instant extraction from any page

Just get the data. One parameter is all you need. <code>"pageContent": true</code> is your key to instantly extract the main content of any page. No selectors in sight, no HTML to clean up – just clean, slim-line content, ready for LLMs or any use case.

1{
2  "httpResponseBody": true,
3  "pageContent": true
4}
5
6def parse(self, response):
7    http_response_body: bytes = response.body
8    with open("http_response_body.html", "wb") as fp:
9        fp.write(http_response_body)
10    page_content = response.raw_api_response["pageContent"]
11    yield page_content
Copy

Ask for any field, get it back structured

Our most powerful capability, custom attributes extraction, puts a scraping-tuned Large Language Model behind every request.

1{
2  "pockets": {
3    "type": "integer",
4    "description": "What is the number of pockets in this garment?"
5  }
6}
Copy

Add AI Extraction to your first request

Simple pricing that scales with your needs

Explore transparent pricing designed to grow with your needs.

Quick to Integrate, Easy to Use.

Add AI Extraction to any request with a single parameter

1import requests
2
3api_response = requests.post(
4    "https://api.zyte.com/v1/extract",
5    auth=("YOUR_ZYTE_API_KEY", ""),
6    json={
7        "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
8        "product": True,
9    },
10)
11product = api_response.json()["product"]
Copy

Custom attributes

Describe any field in natural language and the LLM returns it.

1from base64 import b64decode
2
3import requests
4
5api_response = requests.post(
6    "https://api.zyte.com/v1/extract",
7    auth=("YOUR_ZYTE_API_KEY", ""),
8    json={
9        "url": "https://toscrape.com",
10        "httpResponseBody": True,
11    },
12)
13body: bytes = b64decode(api_response.json()["httpResponseBody"])
Copy