# Startpage Related Searches Scraper (`searchapi/startpage-related-searches-scraper`) Actor

Extracts related query phrases from Startpage's current official search-suggestions service, with the rendered related-search module retained as a fallback.

- **URL**: https://apify.com/searchapi/startpage-related-searches-scraper.md
- **Developed by:** [Search API](https://apify.com/searchapi) (community)
- **Categories:** SEO tools, Developer tools
- **Stats:** 2 total users, 1 monthly users, 75.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 1,000 search results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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 Related Searches Scraper

Enter one or more search queries and collect the related-search suggestions displayed on public Startpage result pages. The Actor first reads Startpage's structured page state and uses a narrowly scoped DOM fallback only when necessary.

### Input

- `query` or `queries`: search values to enter.
- `language`, `region`, and `safeSearch`: result controls represented in each Startpage request.
- `maxItems` and `maxPages`: global suggestion limit and per-query page limit.
- `maxConcurrency`, `maxRequestRetries`, `navigationTimeoutSecs`, and `requestHandlerTimeoutSecs`: bounded browser controls.
- `proxyConfiguration`: optional authorized Apify or custom proxy. Direct mode is the default.

### Output

Every record has a deterministic `id`, normalized `relatedSearch`, the original query, query/page/rank/position provenance, validated Startpage URLs when present, `source`, and an ISO-8601 timestamp. Suggestions are deduplicated case-insensitively by query and text, and `maxItems` is enforced globally.

The `OUTPUT` record reports `completed`, `partial`, `no-results`, `failed`, or `blocked`. Challenge and suspended-connection pages are classified as blocked and are never stored as suggestions. The Actor does not bypass Startpage access controls or fabricate data.

# Actor input Schema

## `query` (type: `string`):

The primary value to enter in Startpage search.

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

Optional additional search values.

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

Startpage result language, such as english, german, or french.

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

Optional Startpage region or country code.

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

Safe-search level sent with each query.

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

Maximum unique related searches to save across all queries.

## `maxPages` (type: `integer`):

Number of Startpage result pages to inspect for each query.

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

Maximum simultaneous browser pages.

## `maxRequestRetries` (type: `integer`):

Retries for temporary browser and network failures.

## `navigationTimeoutSecs` (type: `integer`):

Maximum seconds allowed for navigation.

## `requestHandlerTimeoutSecs` (type: `integer`):

Maximum seconds allowed for processing one result page.

## `proxyConfiguration` (type: `object`):

Optional authorized Apify or custom proxy. Direct mode is the default; proxy values are never logged.

## `debug` (type: `boolean`):

Enable extra non-sensitive diagnostic logging.

## `fixtureHtml` (type: `string`):

Testing-only Startpage HTML fixture; no network request is made when supplied.

## Actor input object example

```json
{
  "query": "privacy search engine",
  "language": "english",
  "safeSearch": "moderate",
  "maxItems": 50,
  "maxPages": 1,
  "maxConcurrency": 2,
  "maxRequestRetries": 2,
  "navigationTimeoutSecs": 60,
  "requestHandlerTimeoutSecs": 120,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "debug": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `output` (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 = {
    "query": "privacy search engine",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("searchapi/startpage-related-searches-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 = {
    "query": "privacy search engine",
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("searchapi/startpage-related-searches-scraper").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 '{
  "query": "privacy search engine",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call searchapi/startpage-related-searches-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,searchapi/startpage-related-searches-scraper"
        }
    }
}
```

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/n0xmfF9qnjiCS7Gaj/builds/O1QGQusevjI5oBSZ5/openapi.json
