# AI Web Scraper - Extract Any Website to JSON in Plain English (`plotpointtech/ai-page-extractor`) Actor

Describe the data you want in plain English and get clean JSON from any web page: products, prices, listings, contacts, events. No selectors or code. JavaScript pages handled. From $5 per 1,000 pages, $2 with your own key.

- **URL**: https://apify.com/plotpointtech/ai-page-extractor.md
- **Developed by:** [Plot Point Technologies](https://apify.com/plotpointtech) (community)
- **Categories:** AI, Automation, Developer tools
- **Features:** Limited permissions
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 page extracted (standard)s

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## AI Web Scraper: Extract Any Website to JSON in Plain English

**Describe the data you want in plain English and get clean, structured JSON from any web page.** No CSS selectors, no code, and nothing to fix when a site changes its layout. Paste URLs, write something like *"product name, price, stock status and SKU"*, and the AI page extractor returns one tidy record per page, or one record per item on listing pages.

### What can this AI web scraper do?

- **Extract any fields you describe:** prices, product details, contact details, event dates, job listings, specifications, facts from articles.
- **Handle listing pages:** turn on **Page lists many items** to get one row per product, result, event or directory entry.
- **Keep columns consistent:** name the exact **Output fields** you want (with hints like `price: number only`) for spreadsheet-ready data.
- **Handle JavaScript sites:** pages are downloaded directly first; if a page comes back nearly empty, it is opened in a real browser automatically (Render JavaScript: Auto).
- **Never invent data:** values not on the page come back as `null`.
- **Choose cost vs. precision:** Standard mode for most pages, Accurate mode for messy or complex pages, or bring your own Anthropic API key for the lowest price.

### What do you get?

| Field | Description |
|---|---|
| `url`, `pageTitle` | The page processed and its title |
| `status` | `ok`, or the reason a page could not be processed |
| `data` | One record with the fields you asked for (single-item pages) |
| `items` | A list of records (listing pages, with "Page lists many items" on) |
| `renderedWithBrowser`, `truncated` | Whether a browser was needed and whether very long page text was shortened |
| `pageText` | Optional cleaned page text |

### Who uses it?

- **E-commerce teams:** product names, prices, variants, ratings and availability from store pages.
- **Lead generation:** company names, addresses, phone numbers and websites from business directories.
- **Events and listings:** dates, venues, prices and links from calendars and listing pages.
- **Research:** facts, tables and key figures from articles, reports and Wikipedia.
- **AI agents and automations:** a reliable "read this page and give me these fields" step.

### How to use it

1. Click **Try for free** (or **Start**).
2. Paste one or more **Page URLs**.
3. In **What to extract**, describe the fields in plain English. Be specific: "price as a number without the currency symbol".
4. Optionally list **Output fields** and turn on **Page lists many items** for catalogs and search results.
5. Run it and export the results to Excel, CSV, JSON or Google Sheets.

### Input example

```json
{
  "startUrls": [
    {
      "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"
    }
  ],
  "instructions": "Book title, price, availability, star rating and UPC",
  "mode": "standard"
}
```

### Output example

```json
{
  "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
  "status": "ok",
  "pageTitle": "A Light in the Attic | Books to Scrape - Sandbox",
  "truncated": false,
  "renderedWithBrowser": false,
  "data": {
    "title": "A Light in the Attic",
    "price": "£51.77",
    "availability": "In stock (22 available)",
    "star_rating": "Three",
    "upc": "a897fe39b1053632"
  }
}
```

### How much does it cost?

You pay per page extracted, with no separate compute charge (only a $0.00005 start fee per run):

| Mode | Price per page | 1,000 pages |
|---|---|---|
| Standard (up to ~60,000 characters of page text) | $0.005 | **$5** |
| Accurate (stronger model, up to ~15,000 characters) | $0.03 | $30 |
| Your own Anthropic API key | $0.002 | $2 (plus your own AI usage) |

Examples: 200 product pages in Standard mode cost $1.00; 50 tricky pages in Accurate mode cost $1.50. Pages that fail to load or are empty are not charged for AI extraction. Apify's free plan includes monthly credits, so you can try it at no cost.

### Use it via API, Make, Zapier, n8n or an AI agent

**Apify API.** Start a run and get the results back in one HTTP request (replace `YOUR_API_TOKEN` with the token from Apify Console > Settings > Integrations):

```bash
curl -X POST "https://api.apify.com/v2/acts/plotpointtech~ai-page-extractor/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls": [{"url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"}], "instructions": "Book title, price, availability, star rating and UPC", "mode": "standard"}'
```

For longer jobs, start the run asynchronously and read the dataset when it finishes. Official `apify-client` libraries exist for Python and JavaScript; the **API** tab on this page has ready-made code.

**No-code automation.** Connect the tool to **Make, Zapier, n8n, Google Sheets, Slack, Airtable** or any webhook with Apify integrations, and use **Schedules** in Apify Console to run it hourly, daily or weekly.

**AI agents (MCP).** Give Claude, ChatGPT, Cursor, VS Code or any MCP-compatible agent direct access to this tool through the hosted Apify MCP server. Add this server URL to your client:

```
https://mcp.apify.com?tools=plotpointtech/ai-page-extractor
```

The agent can then call the tool with the same input fields shown above and read the results.

### FAQ

**Is it legal to scrape websites with AI?**
Extracting publicly available information is generally lawful, but you are responsible for respecting each website's terms of use, copyright and privacy laws such as GDPR when pages contain personal data. This tool does not log in, solve CAPTCHAs or get around blocking.

**Which websites does it work on?**
Most public pages: online stores, directories, news and blogs, documentation, event calendars. Sites that block automated visitors, or content behind a login, are not supported.

**How accurate is it?**
Very good on well-structured pages in Standard mode. For dense tables, unusual layouts or pages where precision matters, use Accurate mode. Naming your fields with short hints gives the most consistent output.

**Can it follow links or crawl a whole site?**
It processes the URLs you give it. To collect a list of pages first, export them from the site's sitemap (our SEO Audit Crawler has a cheap "Sitemap URLs only" mode), then pass the URLs here.

**Is my API key safe?**
Your own Anthropic key is stored as an encrypted secret input and is never logged.

### Related tools from Plot Point Technologies

- [Website to Markdown Crawler for AI, LLM & RAG - $1/1K](https://apify.com/plotpointtech/website-to-markdown-crawler): any website as clean Markdown for LLMs and RAG.
- [Email & Contact Scraper - Website Emails, Phones & Socials](https://apify.com/plotpointtech/website-contact-finder): emails, phones and social links from any list of company websites.
- [Website Tech Stack Detector - CMS, Analytics & 290+ Techs](https://apify.com/plotpointtech/website-technology-detector): CMS, ecommerce, analytics, pixels and hosting of any website.
- [SEO Audit Crawler - Titles, Meta, H1, Broken Pages & Links](https://apify.com/plotpointtech/sitemap-seo-page-audit): on-page SEO check of every page in a website's sitemap.

Plot Point Technologies is not affiliated with Anthropic or any website you process.

***

If this tool saved you time, we would be grateful for a short review on this page; it helps other people find it. If something did not work as expected, please open an issue on the **Issues** tab and we will look into it quickly.

# Actor input Schema

## `startUrls` (type: `array`):

The pages to extract data from.

## `instructions` (type: `string`):

Describe in plain English what you want from each page, e.g. 'Product name, price, stock status and the first 200 characters of the description'.

## `fields` (type: `array`):

Name the exact columns you want, optionally with a hint after a colon, e.g. 'price: number only, no currency symbol'. Leave empty to let the AI choose.

## `multipleItemsPerPage` (type: `boolean`):

Turn on for listing pages (search results, catalogs, directories) to get one item per entry on the page.

## `mode` (type: `string`):

Standard is fast and cheap and handles most pages. Accurate uses a stronger model for complex or messy pages.

## `anthropicApiKey` (type: `string`):

Use your own key and pay a lower per-page price. Stored encrypted and never logged.

## `includePageText` (type: `boolean`):

Also return the cleaned page text with each result.

## `maxConcurrency` (type: `integer`):

How many pages to process in parallel.

## `renderJavaScript` (type: `string`):

Auto opens the page in a real browser only when the plain download comes back nearly empty. Always uses a browser for every page (slower). Never skips the browser.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"
    }
  ],
  "instructions": "Book title, price, availability, star rating and UPC",
  "multipleItemsPerPage": false,
  "mode": "standard",
  "includePageText": false,
  "maxConcurrency": 5,
  "renderJavaScript": "auto"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"
        }
    ],
    "instructions": "Book title, price, availability, star rating and UPC"
};

// Run the Actor and wait for it to finish
const run = await client.actor("plotpointtech/ai-page-extractor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html" }],
    "instructions": "Book title, price, availability, star rating and UPC",
}

# Run the Actor and wait for it to finish
run = client.actor("plotpointtech/ai-page-extractor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"
    }
  ],
  "instructions": "Book title, price, availability, star rating and UPC"
}' |
apify call plotpointtech/ai-page-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,plotpointtech/ai-page-extractor"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/sgQ5QlluutHOmeivA/builds/ttICn8BAlhEF2trfI/openapi.json
