# Startpage Search Scraper (`igolaizola/startpage-search-scraper`) Actor

Scrape organic SERPs from startpage.com, a privacy-focused alternative to Google Search. Collect rankings, titles, URLs, snippets, domains, and sitelinks for SEO research. Export JSON, CSV, or Excel, or access results via API.

- **URL**: https://apify.com/igolaizola/startpage-search-scraper.md
- **Developed by:** [Iñigo Garcia Olaizola](https://apify.com/igolaizola) (community)
- **Categories:** SEO tools, Developer tools, Automation
- **Stats:** 2 total users, 1 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 Search Scraper — Organic SERP Rankings, URLs & SEO Data

Startpage Search Scraper extracts organic SERPs from startpage.com, a privacy-focused alternative to Google Search. Use it for SEO research, competitor monitoring, content discovery, and lead generation; run multiple queries, apply regional or recency filters, and export analysis-ready results in JSON, CSV, or Excel, or access them via API.

### 🤖 What does Startpage Search Scraper do?

- **Organic rankings** — collect overall and page-level result positions.
- **Page details** — extract titles, destination URLs, display URLs, domains, and snippets.
- **Related links** — capture sitelinks when Startpage displays them.
- **Anonymous View links** — collect privacy-viewing links when available.
- **Search targeting** — control region, language, Safe Search, time period, and result count.

**Great for:** SEO tracking, competitor research, link prospecting, content analysis, and lead list building.

> SEO keywords: **startpage.com scraper**, **Startpage SERP API**, **Google Search alternative**, **scrape organic search results**, **privacy search data**, **Apify actor**.

### 💡 Why scrape Startpage search results?

- 📈 **Track organic visibility** — see which domains and pages rank for important queries.
- 🎯 **Find prospects** — build focused URL and domain lists for outreach or partnerships.
- 🔎 **Discover competitors** — identify publishers and businesses appearing around a topic.
- 🗓️ **Monitor changes** — schedule repeated runs to compare rankings and snippets over time.
- 🌍 **Research markets** — compare result sets across supported regions and languages.

### 🚀 How to use

1. **Add the actor** — open **Startpage Search Scraper** in Apify Store.
2. **Enter queries** — add one or more keywords, phrases, or search operators to `queries`.
3. **Choose a limit** — set `maxItems` and optionally select region, language, Safe Search, or time period.
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 | Keywords or search operators. Each query is paginated before the next starts. |
| `maxItems` | Integer | Yes | Maximum organic 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`, `es_ES`, or `en-GB_GB`. 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`. |

**SEO competitor research**

```json
{
  "queries": ["best web scraping platforms", "web scraping API"],
  "maxItems": 50,
  "region": "en_US",
  "language": "english",
  "safeSearch": "moderate",
  "timePeriod": "month"
}
```

**Recent pages from a specific domain**

```json
{
  "queries": ["site:apify.com scraping actors"],
  "maxItems": 100,
  "region": "en-GB_GB",
  "language": "english",
  "safeSearch": "strict",
  "timePeriod": "week"
}
```

### 📊 Output Results

Each Dataset item can contain:

- **query** *(string)* — original search query.
- **position** *(number)* — overall rank across saved pages.
- **page** *(number)* — Startpage result page number.
- **pagePosition** *(number)* — rank within that page.
- **title** *(string)* — result headline.
- **url** *(string)* — destination URL.
- **displayUrl** *(string)* — URL text shown in the result.
- **domain** *(string)* — destination hostname.
- **snippet** *(string)* — result description.
- **sitelinks** *(array, conditional)* — related links shown below the result.
- **anonymousViewUrl** *(string, conditional)* — Anonymous View link.

```json
{
  "query": "best web scraping platforms",
  "position": 1,
  "page": 1,
  "pagePosition": 1,
  "title": "Web Scraping, Data Extraction and Automation",
  "url": "https://apify.com/",
  "displayUrl": "https://apify.com",
  "domain": "apify.com",
  "snippet": "Build and run web scrapers and automation tools in the cloud.",
  "sitelinks": [
    {"title": "Apify Store", "url": "https://apify.com/store"}
  ],
  "anonymousViewUrl": "https://browse.startpage.com/anonymous/example"
}
```

### 🧭 Common Recipes

- **Brand monitoring:** search a brand name, use `timePeriod="week"`, and schedule regular runs.
- **Link prospecting:** combine a topic with operators such as `inurl:resources` or `site:.org`.
- **Regional comparison:** repeat the same query with `region="en_US"`, `region="de_DE"`, and other target locales.
- **Fresh content discovery:** use `timePeriod="day"` or `timePeriod="week"`.

### ⚙️ Best Practices

- Start with 10–50 results while refining queries, then increase `maxItems`.
- Keep queries, region, and language stable when comparing scheduled runs.
- Region and language are preferences; Startpage may still include relevant results from elsewhere.
- Sitelinks and Anonymous View URLs are conditional and will not appear for every result.

### ⚖️ Legal & Ethical Considerations

- Review Startpage's terms and applicable website policies before collecting data.
- Keep request volumes reasonable and avoid disrupting services.
- Handle personal data under applicable privacy laws, including GDPR and CCPA where relevant.
- Respect copyrights and provide attribution when republishing collected content.
- Use the Dataset only for lawful research, monitoring, and business purposes.

This Actor is an independent tool and is **not affiliated with, endorsed by, or sponsored by Startpage**. All trademarks belong to their respective owners.

### ❓ FAQ

**Does the actor include advertisements?**

No. It focuses on organic web results and excludes sponsored placements and unrelated page modules.

**How many results can I collect?**

Set `maxItems` to the desired combined limit, or use `0` to exhaust every query. PPE run limits still apply when configured.

**Why do rankings differ between runs?**

Search results change with time, region, and language. Keep these settings stable for comparable monitoring.

**Are sitelinks and Anonymous View links always available?**

No. They appear only when Startpage includes them for a result.

### 🛟 Support

Need a custom field, filter, or export 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 organic search results to save across all queries.

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

Region whose web 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": [
    "apify"
  ],
  "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": [
        "apify"
    ],
    "maxItems": 10
};

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

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

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/6ATqJwDo5geWlRcLt/builds/cNUgoeOeHJsSHOudv/openapi.json
