mcp-ai-list-extractor-any-website
LocalAbout mcp-ai-list-extractor-any-website
This MCP server starts the Apify actor that extracts structured rows from public web list pages, for users who want to collect items such as jobs or products. It sends page text to a selected model using the user's API key and returns dataset rows with checks for values absent from the page.
Key features
- 01Extract rows from public list pages
- 02Choose fields or let the model select them
- 03Follow pagination links
- 04Use a provider API key
- 05Flag values not found on the page
Use cases
- 01Collect job titles and links from careers pages
- 02Extract product names and prices across pages
- 03Check whether public pages can be read
MCP support
It exposes the `extract_list_from_website` tool to MCP clients. The tool starts an Apify actor run, waits for completion, and returns dataset rows.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y @mambalabsdev/mcp-ai-list-extractor-any-websiteAPIFY_TOKENSecretApify API token from https://console.apify.com/account/integrationsLocal servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
1Saved tool list · updated 2d ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| model | string | No | Your provider's model name. Defaults: openai gpt-4o-mini, anthropic claude-haiku-4-5-20251001, gemini gemini-2.5-flash, groq llama-3.3-70b-versatile. |
| fields | array | No | Exact keys each item must carry, for the same columns on every page. Empty lets the model choose. In Clay, wrap a column in a one item list. |
| api_key | string | No | Your own key. It goes only to the provider you picked and is never stored, logged, or sent to the model. With no key the actor reads up to 3 addresses for free and sends nothing to a model. |
| provider | enum | No | Whose API reads the page, on your key: openai (default), anthropic, gemini, or groq.openai | anthropic | gemini | groq |
| max_items | number | No | The run stops after this many items. Default 1000. |
| start_urls | array | No | Public list pages that answer without a login, for example a careers page or a category page. A page that needs JavaScript or refuses plain requests returns a free row. |
| obey_robots | boolean | No | yes (default) or no. A disallowed page returns a free row. |
| max_charge_usd | string | No | Stops before a page would pass this figure, before your model is called. This limits this actor's charges, not your provider's bill. |
| what_to_extract | string | No | Plain words, for example: every job: title, company, city, link. Needed when a key is given. |
| max_pages_per_url | number | No | How many pages to read from each address by following next page links. Default 3, at most 100. Each page your model answers is charged. |
| max_chars_per_page | number | No | Page text past this length is not sent, which limits your provider bill. Default 40000. The row says when text was cut. |
Details
From the project READMEAI List Extractor for Any Website MCP Server
An MCP server for the Mamba Labs AI List Extractor for Any Website actor on Apify. Turn any public list page into rows on your own LLM key.
What's Inside
- What it does
- Quick start
- Prerequisites
- Example prompts
- Tool
- Inputs
- Pricing
- Full actor documentation
- License
What it does
Give web addresses, a plain words description of one item, and your own OpenAI, Anthropic, Gemini, or Groq key. The actor reads each page over plain HTTP, sends its text to your model, and returns one row per item, with a check that flags values not found on the page. You pay your provider directly and pay this actor per page. It does not run JavaScript and does not get past a refusal.
All of the work runs on Apify. This package is a thin client that starts the actor run, waits for it, and hands back the dataset rows.
Quick start
You need Node.js 18 or newer and an Apify account with an API token.
Add this to your Claude Desktop config (claude_desktop_config.json), Cursor, or any MCP client:
{
"mcpServers": {
"mamba-ai-list-extractor-any-website": {
"command": "npx",
"args": [
"-y",
"@mambalabsdev/mcp-ai-list-extractor-any-website"
],
"env": {
"APIFY_TOKEN": "your-apify-token"
}
}
}
}
Restart the client. The extract_list_from_website tool appears.
Prerequisites
- Node.js 18 or newer.
- An Apify API token from console.apify.com/account/integrations, set as
APIFY_TOKEN. The server lists its tool without a token; a call needs one.
Example prompts
- "Pull every job title, company, and link from this careers page on my OpenAI key."
- "Extract all products and prices from this category page, following 5 pages."
- "Check whether these 3 pages can be read before I use my key."
Tool
extract_list_from_website. One tool. Example arguments:
{
"start_urls": [
"https://quotes.toscrape.com/"
],
"what_to_extract": "every quote: text, author, tags",
"provider": "openai",
"max_pages_per_url": 1
}
Inputs
Every buyer facing input of the actor. Omitted inputs take the actor's own defaults.
| Input | Type | Required | Description |
|---|---|---|---|
start_urls | array | no | Public list pages that answer without a login, for example a careers page or a category page. A page that needs JavaScript or refuses plain requests returns a free row. |
what_to_extract | string | no | Plain words, for example: every job: title, company, city, link. Needed when a key is given. |
fields | array | no | Exact keys each item must carry, for the same columns on every page. Empty lets the model choose. In Clay, wrap a column in a one item list. |
provider | string | no | Whose API reads the page, on your key: openai (default), anthropic, gemini, or groq. |
api_key | string | no | Your own key. It goes only to the provider you picked and is never stored, logged, or sent to the model. With no key the actor reads up to 3 addresses for free and sends nothing to a model. |
model | string | no | Your provider's model name. Defaults: openai gpt-4o-mini, anthropic claude-haiku-4-5-20251001, gemini gemini-2.5-flash, groq llama-3.3-70b-versatile. |
max_pages_per_url | number | no | How many pages to read from each address by following next page links. Default 3, at most 100. Each page your model answers is charged. |
max_items | number | no | The run stops after this many items. Default 1000. |
max_chars_per_page | number | no | Page text past this length is not sent, which limits your provider bill. Default 40000. The row says when text was cut. |
obey_robots | boolean | no | yes (default) or no. A disallowed page returns a free row. |
max_charge_usd | string | no | Stops before a page would pass this figure, before your model is called. This limits this actor's charges, not your provider's bill. |
Pricing
Pay per event on Apify, billed to your Apify account. Prices in USD.
| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
page-extracted, one page your model answered, whatever the number of items on it | $0.01 | $0.0095 | $0.009 | $0.0085 |
apify-actor-start, per run start | $0.012 | $0.012 | $0.012 | $0.012 |
Items behind a charged page, refused pages, failed provider calls, runs with no key, and refused input are free. Mamba Labs pays the platform costs of the run. Mamba Labs pays the platform costs of the run, Apify proxy traffic included.
Full actor documentation
apify.com/mambalabs/ai-list-extractor-any-website
License
MIT. See LICENSE.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.