# Startpage Shopping Scraper (`igolaizola/startpage-shopping-scraper`) Actor

Scrape shopping SERPs from startpage.com, a privacy-focused alternative to Google Search. Collect products, merchant URLs, images, sellers, prices, deals, shipping, ratings, reviews, and rankings. Export JSON, CSV, or Excel, or access results via API.

- **URL**: https://apify.com/igolaizola/startpage-shopping-scraper.md
- **Developed by:** [Iñigo Garcia Olaizola](https://apify.com/igolaizola) (community)
- **Categories:** E-commerce, SEO tools, Developer tools
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Startpage Shopping Scraper — Shopping SERPs, Prices & Sellers

Startpage Shopping Scraper extracts shopping SERPs from startpage.com, a privacy-focused alternative to Google Search. Use it for price research, seller discovery, assortment analysis, and shopping visibility monitoring; collect products, merchant destinations, images, prices, deals, shipping, ratings, reviews, and rankings for export in JSON, CSV, or Excel, or access them via API.

### 🤖 What does Startpage Shopping Scraper do?

- **Product discovery** — collect product names, merchant destinations, and product images.
- **Price intelligence** — capture displayed prices and deal prices when available.
- **Seller research** — identify merchants associated with each result.
- **Offer details** — extract shipping messages, ratings, review counts, and rating links when present.
- **Ranking context** — retain overall position, result page, and page-level position.
- **Search targeting** — control region, language, Safe Search, time period, and result count.

**Great for:** market research, product discovery, seller analysis, price monitoring, and catalog enrichment.

> SEO keywords: **startpage.com shopping scraper**, **shopping SERP scraper**, **Google Search alternative**, **shopping search API alternative**, **price and seller extractor**, **Apify actor**.

### 💡 Why scrape Startpage shopping results?

- 💰 **Compare displayed prices** — review standard and deal prices across merchants.
- 🛍️ **Discover products** — build product lists for a category, model, or keyword.
- 🏪 **Research sellers** — identify which merchants appear prominently in shopping search.
- ⭐ **Study offers** — analyze ratings, reviews, and shipping messages when available.
- 🌍 **Compare markets** — see how products and prices vary by region and language.

### 🚀 How to use

1. **Add the actor** — open **Startpage Shopping Scraper** in Apify Store.
2. **Enter `queries`** — add one or more product names, categories, models, or buying phrases.
3. **Set `maxItems`** — choose a result limit and optional regional filters.
4. **Run the actor** — click **Run** or trigger it through an Apify integration.
5. **Download results** — export the Dataset as JSON, CSV, Excel, XML, or another supported format.

### 📝 Input Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `queries` | String array | Yes | Product search keywords. Each query is paginated before the next starts. |
| `maxItems` | Integer | Yes | Maximum shopping results to save across all queries. Set `0` for unlimited. Minimum `0`; prefilled with `10`. |
| `region` | String | No | Preferred result region. Choose `all` or a supported locale such as `en_US`, `de_DE`, or `es_ES`. Default `all`. |
| `language` | String | No | Preferred result language selected from 82 Startpage-supported languages. Default `english`. |
| `safeSearch` | String | No | Explicit-content filtering: `strict` · `moderate` · `off`. Default `moderate`. |
| `timePeriod` | String | No | Recency filter: `any` · `day` · `week` · `month` · `year`. Default `any`. |

**Consumer electronics research**

```json
{
  "queries": ["noise cancelling headphones", "wireless earbuds"],
  "maxItems": 100,
  "region": "en_US",
  "language": "english",
  "safeSearch": "moderate",
  "timePeriod": "any"
}
```

**Regional automotive offers**

```json
{
  "queries": ["Tesla Model 3 accessories"],
  "maxItems": 250,
  "region": "de_DE",
  "language": "deutsch",
  "safeSearch": "strict",
  "timePeriod": "month"
}
```

### 📊 Output Results

Each Dataset item can contain:

- **query**, **position**, **page**, **pagePosition** — search and ranking context.
- **title** — product name.
- **url** — decoded merchant destination when available.
- **trackingUrl** — shopping result tracking link.
- **imageUrl** — product image URL.
- **seller** — merchant name.
- **price** — standard price as displayed, including currency formatting.
- **dealPrice** *(conditional)* — discounted price.
- **freeShipping** *(conditional)* — displayed shipping message.
- **rating** *(conditional)* — rating value returned with the offer.
- **reviewCount** *(conditional)* — number of reviews.
- **ratingUrl** *(conditional)* — link to rating details.

```json
{
  "query": "noise cancelling headphones",
  "position": 1,
  "page": 1,
  "pagePosition": 1,
  "title": "Wireless Noise Cancelling Headphones",
  "url": "https://www.example-shop.com/products/wireless-headphones",
  "trackingUrl": "https://www.bing.com/aclick?ld=example",
  "imageUrl": "https://www.bing.com/th?id=OPHS.example&pid=21.1",
  "seller": "Example Shop",
  "price": "$249.99",
  "dealPrice": "$199.99",
  "freeShipping": "Free shipping",
  "rating": 9,
  "reviewCount": 428,
  "ratingUrl": "https://www.bing.com/product/reviews?upid=example"
}
```

### 🧭 Common Recipes

- **Price comparison:** search an exact model and compare `price`, `dealPrice`, and `seller`.
- **Seller discovery:** collect 100–250 results and group the Dataset by `seller`.
- **Offer monitoring:** schedule repeated runs and compare product URLs and displayed prices.
- **Regional assortment research:** repeat the query with target `region` and `language` values.

### ⚙️ Best Practices

- Prices are returned as displayed strings, including local currency and punctuation.
- Shopping results are not available for every query or region; use product-specific terms.
- Deal, shipping, rating, and review fields are conditional.
- Verify current price, stock, shipping, and terms on the merchant page before making decisions.
- Keep queries and regional settings stable when comparing scheduled runs.

### ⚖️ Legal & Ethical Considerations

- Review Startpage's terms and merchant website policies.
- Respect trademarks, product-image rights, and merchant attribution.
- Do not present collected prices as guaranteed or current without verification.
- Keep request volumes reasonable and avoid disrupting search or merchant services.
- Handle seller or customer-related personal data under applicable privacy laws.

This Actor is an independent tool and is **not affiliated with, endorsed by, or sponsored by Startpage, Bing, or merchants represented in results**. All trademarks and product content belong to their respective owners.

### ❓ FAQ

**Are prices normalized to a single currency?**

No. `price` and `dealPrice` preserve the value and currency formatting displayed in the result.

**Why are some ratings or deal prices missing?**

Those fields appear only when the shopping result includes that offer metadata.

**Does `url` always point directly to the merchant?**

The actor decodes the merchant destination when it is available. `trackingUrl` preserves the original shopping result link.

**Can the actor check inventory or checkout totals?**

No. It collects shopping search metadata. Verify availability, taxes, shipping, and final price on the merchant page.

### 🛟 Support

Need another product field, filter, or price-monitoring workflow? Contact the developer at https://igolaizola.com/#contact or https://t.me/igolaizola.

# Actor input Schema

## `queries` (type: `array`):

One or more search queries. Each query is paginated fully before the next one starts.

## `maxItems` (type: `integer`):

Maximum number of shopping results to save across all queries.

## `region` (type: `string`):

Region whose shopping results should be preferred.

## `language` (type: `string`):

Preferred language for search results.

## `safeSearch` (type: `string`):

Level of explicit-content filtering.

## `timePeriod` (type: `string`):

Only return results from the selected recent period.

## Actor input object example

```json
{
  "queries": [
    "iphone"
  ],
  "maxItems": 10,
  "region": "all",
  "language": "english",
  "safeSearch": "moderate",
  "timePeriod": "any"
}
```

# 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 = {
    "queries": [
        "iphone"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("igolaizola/startpage-shopping-scraper").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 = {
    "queries": ["iphone"],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("igolaizola/startpage-shopping-scraper").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 '{
  "queries": [
    "iphone"
  ],
  "maxItems": 10
}' |
apify call igolaizola/startpage-shopping-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/OyTqZKh24mYutoRu9/builds/4yScK7JljLVlMjsR5/openapi.json
