# AI Web Scraper — Any URL to JSON by Prompt ✅ No Code (`neuralverge/neuralverge-ai-extract`) Actor

Extract structured data from any URL with a natural-language prompt — no code, no selectors, no LLM API key. Add an optional JSON Schema for an exact output shape. Structured JSON out, MCP-ready. Pay only for successful extractions — misses are free.

- **URL**: https://apify.com/neuralverge/neuralverge-ai-extract.md
- **Developed by:** [NeuralVerge](https://apify.com/neuralverge) (community)
- **Categories:** Automation, Developer tools, AI
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $5.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### AI Web Scraper — Any URL to JSON by Prompt ✅ No Code

Extract structured data from **any URL with a natural-language prompt** — describe what you want,
get it back as clean data. **No code, no CSS selectors, no LLM API key.** Add an optional JSON
Schema when you need an exact output shape. Powered by the Neuralverge
API. **You only pay for successful extractions — a miss costs only the $0.005 lookup fee.** Export to JSON, CSV or Excel.

Ideal for one-off and repeatable extraction, monitoring, enrichment, research, and feeding clean
data to AI agents (MCP-ready).

### ✨ Why this Actor

- 💸 **Pay per successful extractions** — if a page returns no content (or times out), the
  row is skipped and never billed. A miss costs only the $0.005 lookup fee.
- 🗣️ **Just describe what you want** — a natural-language prompt instead of code or selectors.
  Nothing to maintain when a site changes its markup.
- 🔑 **No LLM API key, no login** — the model and fetching run on the Neuralverge backend. You
  don't bring an OpenAI/Gemini key.
- 🎯 **Optional JSON Schema** — pass one to force an exact structured shape; omit it to get a
  clean markdown result. Geo-routing (`countryCode`) built in. MCP-ready for AI agents.

### 🔧 How it works

1. **Provide a URL and an instruction** (e.g. "Extract company name, website, industry, founded
   year, specialties"). Optionally add a JSON Schema for an exact shape.
2. **Run the Actor.** Fetching + AI extraction run on the Neuralverge backend.
3. **Get one dataset row** — `{ url, settings, machine, human }`. With a JSON Schema the structured
   object lands in `machine`; without one, `machine` is `null` and the result comes back as a
   markdown summary in `human`.

If a URL returns no content (or an upstream error like a 504), it's logged and **skipped without
charge** — you're not billed for that run.

### Input

One URL per run.

| Field | Type | Notes |
|---|---|---|
| `url` | string | The page URL to extract from. |
| `instructions` | string | Natural-language description of what to extract. |
| `extractSchema` | object | Optional JSON Schema for an exact output shape. |
| `countryCode` | string | Two-letter geo-routing code (advanced, default `us`). |
| `finalizerModel` | string | Extraction model (advanced). |

```json
{
  "url": "https://www.linkedin.com/company/ibm",
  "instructions": "Extract company name, website, industry, founded year, specialties"
}
```

### What you'll receive

Each dataset row is `{ url, settings, machine, human }` — the source `url`, the extraction
`settings` (the JSON schema lives at `settings.extract_schema_json` when you pass one), the
Neuralverge system `machine` output 1:1, and a human-readable markdown summary in `human`.

- **With a JSON Schema** — `machine` holds the structured object matching your schema; `human`
  carries a readable summary of the same facts.
- **Without a schema** — `machine` is `null` and the extracted facts come back as markdown in
  `human`.

Service fields (`session_id`, `total_points`, `duration_ms`, `kind`) and the raw API response are
not included.

#### Example output (real run)

A real dataset row from `https://www.linkedin.com/company/ibm` with the prompt above and
**no schema** — shown in full. With no schema the backend returns `machine: null`, so the
extracted facts come back as text in `human`. Pass a JSON Schema and `machine` holds the
structured object instead.

```json

{
  "url": "https://www.linkedin.com/company/ibm",
  "settings": {
    "has_schema": false,
    "country_code": "us"
  },
  "machine": null,
  "human": "Company Name: IBM\nWebsite: http://www.ibm.com\nIndustry: IT Services and IT Consulting\nFounded Year: N/A\nSpecialties:\n- Analytics\n- Commerce\n- Research\n- Financing\n- Consulting\n- IT infrastructure\n- Experience Design\n- Cloud\n- Security\n- Internet of Things\n- Mobile\n- Cognitive\n- Technology support\n- Watson\n- Industry solutions\n- Resiliency services\n- Systems services"
}
```

> Genuine result from a live run (no schema). Note `Founded Year: N/A` and the full 17-item
> specialties list come straight from the page. Pass a JSON Schema to get `company_name`,
> `website`, `industry`, `founded_year`, `specialties` as a structured object inside `machine`
> instead — `human` keeps the readable summary. No wrapper fields (`kind`/`used_url`/`total_points`)
> and no raw response are included.

### Pricing

Pay per event — **$0.005 per run**, plus **$0.005 per successful extraction** ($5 per 1,000). **A miss costs only the $0.005 lookup fee — you are never charged the per-result price.**

| Event | Price |
|---|---|
| Lookup (per run) | **$0.005** |
| Successful extraction (per dataset row) | **$0.005** |

URLs that return no content are **not charged the per-result price** — only the $0.005 lookup fee applies. Pricing is on top of your Apify platform usage.

#### Free plan limits

Users on any **paid Apify plan** are not affected by anything in this section.

On the **Apify Free plan** all Neuralverge Actors share one budget, per user and per calendar month:
**15 runs in total, at most 5 of them on this Actor, and 35 returned rows.** A run that finds nothing
still counts, because the lookup is performed either way. LinkedIn People Search is metered
differently — one run there uses 25 of the 35 rows, because a full page of 25 profiles is bought
upstream whether or not all of them are returned. When a limit is reached the Actor stops gracefully
with a status message naming it; everything resets on the 1st of every month, and any paid Apify
plan removes all of it.

### Integrations & API

Results are stored in a standard Apify dataset — export as CSV, JSON, XML or Excel, or fetch on
demand through the [Apify API](https://docs.apify.com/api). The Actor also plugs into Apify's
integrations (Make, Zapier, n8n, webhooks) and can be called from any [MCP](https://mcp.apify.com/)
client to give an AI agent a general-purpose web-extraction tool.

### FAQ

**Do I need an OpenAI/Gemini or Crunchbase-style API key?** No. The model and fetching run on the
Neuralverge backend — you bring nothing but a URL and a prompt.

**Do I have to write selectors or code?** No. Describe what you want in plain language.

**When should I use a JSON Schema?** When you need a guaranteed structure (fixed field names/types)
for a database or pipeline. Otherwise the markdown result in `human` is enough.

**Am I charged if extraction fails?** No. You're billed only for rows returned to the dataset;
empty results and upstream errors are logged and skipped.

***

**Disclaimer:** This Actor is an independent tool. You are responsible for ensuring you have the
right to extract from the URLs you submit and for complying with each site's terms and applicable
law. All trademarks are property of their respective owners.

# Actor input Schema

## `url` (type: `string`):

The page URL to extract data from (one per run). Apify Free plan: all Neuralverge Actors share one monthly budget per user — 15 runs in total, at most 5 of them on this Actor, and 35 returned rows; a run that finds nothing counts too. Any paid Apify plan removes the limit.

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

Natural-language description of what to extract from the page.

## `extractSchema` (type: `object`):

Optional JSON Schema describing the exact output shape. If omitted, extraction follows the instructions only.

## Actor input object example

```json
{
  "url": "https://www.linkedin.com/company/ibm",
  "instructions": "Extract data from LinkedIn company profile\n- Company name\n- Tagline\n- About\n- Website\n- LinkedIn url\n- Industry\n- Company size\n- Employee count\n- Founded year\n- Follower count\n- Headquarters\n- Locations\n- Specialties"
}
```

# Actor output Schema

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

Extracted data — structured fields when a JSON Schema is used, otherwise a markdown result under `human` — one row per successful URL.

# 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 = {
    "url": "https://www.linkedin.com/company/ibm",
    "instructions": `Extract data from LinkedIn company profile
- Company name
- Tagline
- About
- Website
- LinkedIn url
- Industry
- Company size
- Employee count
- Founded year
- Follower count
- Headquarters
- Locations
- Specialties`
};

// Run the Actor and wait for it to finish
const run = await client.actor("neuralverge/neuralverge-ai-extract").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 = {
    "url": "https://www.linkedin.com/company/ibm",
    "instructions": """Extract data from LinkedIn company profile
- Company name
- Tagline
- About
- Website
- LinkedIn url
- Industry
- Company size
- Employee count
- Founded year
- Follower count
- Headquarters
- Locations
- Specialties""",
}

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

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

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

```

## CLI example

```bash
echo '{
  "url": "https://www.linkedin.com/company/ibm",
  "instructions": "Extract data from LinkedIn company profile\\n- Company name\\n- Tagline\\n- About\\n- Website\\n- LinkedIn url\\n- Industry\\n- Company size\\n- Employee count\\n- Founded year\\n- Follower count\\n- Headquarters\\n- Locations\\n- Specialties"
}' |
apify call neuralverge/neuralverge-ai-extract --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=neuralverge/neuralverge-ai-extract",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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