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

Identifying and testing XPath or CSS selectors is slow and repetitive.
The results are in: Zyte customers love our products. Check out these views and reviews on independent sites.
End the pain of parsing. Let AI understand the page and extract the data for you.

Identifying and testing XPath or CSS selectors is slow and repetitive.
The results are in: Zyte customers love our products. Check out these views and reviews on independent sites.
Fragile selectors break when site markup changes.
Scraping dozens of sites means never-ending maintenance.
Three ways to turn any web page into valuable data.
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 product = response.raw_api_response["product"]
11 yield product
12}1{
2 "headline": "Royal Victoria Infirmary",
3 "itemMain": "Hospital NHS hospital Royal Victoria Infirmary Queen Victoria Road, Newcastle Upon Tyne, Tyne and Wear, NE1 4LP (0191) 233 6161 Provided and run by: The Newcastle upon Tyne Hospitals NHS Foundation Trust Overview Latest inspection summary All inspection reports and timeline Registration details Map and contact details Get alerts when we inspect Give feedback on care at this service About your care...",
4 // ...,
5 "itemMainXPath": "//*[@id=\"main-content-wrapper\"]",
6 "metadata": {
7 "dateDownloaded":"2025-08-12T16:14:22Z"
8 }
9}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.
Our most powerful capability, custom attributes extraction, puts a scraping-tuned Large Language Model at your beck and call.
No more selectors. Use natural language to instruct Zyte API to find and return custom on-page data.
1{
2 "pockets": {
3 "type": "integer",
4 "description": "What is the number of pockets in this garment?"
5 }
6}Go beyond language-based extraction. Summarize, transform or translate captured data before it is even returned.
1{
2 "datetime_posted": {
3 "type": "string",
4 "description": "the date when the article was created, in the following format: YYYY/MM/DD"
5 }
6}AI Extraction integrates seamlessly with your existing Zyte API workflows.
Use AI Extraction directly inside your Scrapy spiders with no extra parsing logic — just one parameter in your request and the data arrives structured."
Specialized AI models for ecommerce products, articles, jobs, and search engine results ensure accuracy and efficiency.
Get common fields by default, then customize the schema to fit your needs. Add or remove fields with either code or natural language prompts.
Forget fixing brittle selectors when sites change — our AI adapts automatically to evolving page structures.
Explore transparent pricing designed to grow with your needs.
See our pricing plansFragile selectors break when site markup changes.
Scraping dozens of sites means never-ending maintenance.
Three ways to turn any web page into valuable data.
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 product = response.raw_api_response["product"]
11 yield product
12}1{
2 "headline": "Royal Victoria Infirmary",
3 "itemMain": "Hospital NHS hospital Royal Victoria Infirmary Queen Victoria Road, Newcastle Upon Tyne, Tyne and Wear, NE1 4LP (0191) 233 6161 Provided and run by: The Newcastle upon Tyne Hospitals NHS Foundation Trust Overview Latest inspection summary All inspection reports and timeline Registration details Map and contact details Get alerts when we inspect Give feedback on care at this service About your care...",
4 // ...,
5 "itemMainXPath": "//*[@id=\"main-content-wrapper\"]",
6 "metadata": {
7 "dateDownloaded":"2025-08-12T16:14:22Z"
8 }
9}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.
Our most powerful capability, custom attributes extraction, puts a scraping-tuned Large Language Model at your beck and call.
No more selectors. Use natural language to instruct Zyte API to find and return custom on-page data.
1{
2 "pockets": {
3 "type": "integer",
4 "description": "What is the number of pockets in this garment?"
5 }
6}Go beyond language-based extraction. Summarize, transform or translate captured data before it is even returned.
1{
2 "datetime_posted": {
3 "type": "string",
4 "description": "the date when the article was created, in the following format: YYYY/MM/DD"
5 }
6}AI Extraction integrates seamlessly with your existing Zyte API workflows.
Use AI Extraction directly inside your Scrapy spiders with no extra parsing logic — just one parameter in your request and the data arrives structured."
Specialized AI models for ecommerce products, articles, jobs, and search engine results ensure accuracy and efficiency.
Get common fields by default, then customize the schema to fit your needs. Add or remove fields with either code or natural language prompts.
Forget fixing brittle selectors when sites change — our AI adapts automatically to evolving page structures.
Explore transparent pricing designed to grow with your needs.
See our pricing plans1from 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"])11from 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"])1