# Pinterest Search Suggestions Scraper: a-z, questions, CSV (`tallyrake/pinterest-autocomplete-scraper`) Actor

Pinterest search suggestions as CSV/JSON rows: seed, query sent, suggestion, rank, expansion (a-z, question words, prepositions; comparisons and numbers optional), region, language, stable id.

- **URL**: https://apify.com/tallyrake/pinterest-autocomplete-scraper.md
- **Developed by:** [Tallyrake Data](https://apify.com/tallyrake) (community)
- **Categories:** Social media, SEO tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 result rows

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Pinterest Search Suggestions Scraper: a-z, questions, CSV

Pinterest search-box suggestions as CSV/JSON rows. Give it seed keywords; it requests the suggestions Pinterest shows as a user types, for the seed, seed + a to z, question words, and prepositions (comparisons and numbers only if you enable those expansions), for the region and language you set. One flat row per unique suggestion per seed, each with a stable `id`. $0.25 per 1,000 rows.

This is **not** pin scraping, **not** board scraping, and **not** profile scraping. It does not return pin images, save counts, board contents, follower counts, or bios. It is the dropdown list from Pinterest's search box, nothing else. A row whose `suggestionType` is `user` is only the name that dropdown showed, not that account.

Same engine, other search boxes: [Google](https://apify.com/tallyrake/google-autocomplete-scraper), [YouTube](https://apify.com/tallyrake/youtube-autocomplete-scraper), [Amazon](https://apify.com/tallyrake/amazon-autocomplete-scraper), [Bing](https://apify.com/tallyrake/bing-autocomplete-scraper), [DuckDuckGo](https://apify.com/tallyrake/duckduckgo-autocomplete-scraper), [TikTok](https://apify.com/tallyrake/tiktok-autocomplete-scraper), [Etsy](https://apify.com/tallyrake/etsy-autocomplete-scraper). Same input shape, same flat rows, one run per engine.

### What you get

| Field | Example |
|---|---|
| `id` | stable per seed, region, language, query and suggestion |
| `keyword` | `makeup` (your seed) |
| `query` | `makeup` (the exact string sent) |
| `suggestion` | `makeup looks` |
| `rank` | `1` (position in Pinterest's list for that query) |
| `expansion` | `direct`, `alphabet`, `question`, `preposition`, `comparison`, `number`, `depth` |
| `modifier` | `b`, `how`, `for`, `vs` |
| `depth` | `1` or `2` |
| `suggestionType` | `query`, or `user` when the dropdown shows a profile name. `trending` when Pinterest marks the item that way |
| `suggestionId` | Pinterest's id for that item, e.g. `ac_NfpCARE3` |
| `url` | `https://www.pinterest.com/search/pins/?q=makeup+looks&rs=ac&len=6&source_id=ac_NfpCARE3` |
| `pinCount` | a pin count when the item itself includes one (`pin_count` or `native_pin_count`), otherwise `null` |
| `boardCount` | a board count when the item includes `board_count`, otherwise `null` |
| `trending` | `true` when the item is a trending suggestion, otherwise `null` |
| `verified` | `true` or `false` on a profile suggestion, otherwise `null` |
| `subLabel` | the second line of a profile suggestion (usually the username), otherwise `null` |
| `language`, `region` | `en`, `us` |
| `engine` | `pinterest` |
| `fetchedAt` | ISO timestamp |

Rows are deduplicated per seed (case-insensitive), so a suggestion that appears under several modifiers is counted once, under the first query that produced it.

Want the file instead of running the actor? A keyword list from live autocomplete for your seeds is $10, made to order, at https://tallyrake.com/files (CSV and XLSX by email within 24 hours of your order details).

### Example input

```json
{
  "keywords": ["makeup"],
  "expansions": ["alphabet", "questions", "prepositions"],
  "depth": 1,
  "language": "en",
  "region": "us",
  "proxyConfiguration": { "useApifyProxy": true }
}
```

Paste seeds one per line. The default expansions send 52 queries per seed (1 seed + 26 letters + 14 question words + 11 prepositions = 52). Comparisons and numbers are not in that 52; they are extra expansions. One seed is not one billable unit: you are billed unique dataset rows, not queries.

Proxy defaults to Apify Proxy with no proxy group (datacenter). `region` selects the Pinterest host (`us` is www.pinterest.com, `gb` is uk.pinterest.com, any other two-letter code is that subdomain) and `language` is sent as Accept-Language. Pinterest also localises by exit IP; pin a country on the proxy for a genuine other market.

### Recipes

**Content brief for one topic.** Seeds: your topic. Expansions: questions, prepositions. Depth 1. Output: the questions and phrasings Pinterest suggests for the topic, each with the engine rank on the query that first produced it (dedup keeps the first hit, not a single global order).

**Keyword list for a niche.** Seeds: 10 to 50 head terms. Expansions: alphabet. Depth 2. Pinterest returned 12 suggestions on the checked query, and `maxQueriesPerKeyword` (default 300) caps the requests per seed, so one seed can produce at most 3,600 dataset rows before dedup (at most $0.90 at $0.25 per 1,000). Empty queries bill $0. Start at concurrency 3; the log shows 429 or 403 when a proxy or a split is needed.

**Localized suggestions.** Same seeds, `language` and `region` set per run. Rows carry both codes so runs can be merged. For a market that is not the run's own IP, enable Apify Proxy and pin that country. A `de` host with language `de` changed the list on the machine this was built on; the country Pinterest reported still followed the US exit IP.

**Brand and competitor monitoring.** Seeds: brand names. Expansions: comparisons, questions. Schedule daily. Diff the `suggestion` column between runs.

### Reliability and cost

Pay per event: $0.25 per 1,000 dataset rows, plus Apify platform usage for the run. Empty queries produce no rows and no results charge. Every request is paced with a jittered delay (`pacingMs`, default 200 ms). If the engine answers 429 or 403, the run rotates its session and retries.

No soaked run has been measured on Apify yet, so this README does not state a success rate or a platform-usage cost.

### Cost limit

If a run reaches the "Maximum total charge per run" you set, it stops in process rather than being aborted by the platform: the run ends with status SUCCEEDED, and the run status message on the run detail says how many rows were written and how many were found but not written and not billed. Re-running the same input writes and bills the same prefix again, so raise the cap before re-running if you want the rest.

### Bigger jobs

Running thousands of Pinterest keywords, or need this as a one-off file instead of a run? We build custom exports — any keywords, countries and date ranges, delivered as flat CSV or JSON within 24 hours: https://tallyrake.com/datasets/

### Limits

This is Pinterest's suggestion list for the region and language you set, at the time of the run. It carries no search volume. The checked query returned 12 suggestions, one of them a profile name in the same dropdown. Export CSV for Excel and Google Sheets. Export JSON for pipelines.

It is not a pin scraper, not a board scraper, and not a profile scraper. It does not log in, does not download images, and does not walk search-result pages.

### Where this sits on the shelf

Apify Store, read 2026-10-15. This actor is not published; the $0.25 per 1,000 rows figure above is the placeholder price, and the maintainer sets pay-per-result on the Store. Nothing in this build charges a custom event. One default dataset row is one result.

| Listing | Users (30d) | Total users | Price per 1,000 rows |
|---|---|---|---|
| easyapi/pinterest-keyword-autocomplete-scraper | 4 | 122 | $4.99 |
| afanasenko/pinterest-scraper (pins, boards, profiles, and a suggestions mode) | 45 | 79 | $2.00 |
| tallyrake/pinterest-autocomplete-scraper (this actor) | 0 | 0 | $0.25 |

afanasenko/pinterest-scraper is not a suggestions-only actor. Its $2.00 figure is the paid-plan floor for every result type it returns, including pins.

# Actor input Schema

## `keywords` (type: `array`):

One seed per line. Each seed is expanded (see Expansions) and every expanded query is sent to Pinterest's search-suggestion endpoint.

## `expansions` (type: `array`):

How to fan each seed out. alphabet: seed + a..z (26 queries). questions: who/what/why/how/when/where/which/is/are/can/does/do/will/should + seed (14). prepositions: seed + for/with/without/to/near/in/on/from/like/after/before (11). comparisons: seed + vs/or/versus/and (4). numbers: seed + 1..5/10/2026 (7). The plain seed is always queried.

## `depth` (type: `integer`):

1 = expand the seeds only. 2 = also send every first-level suggestion back to Pinterest (capped by Max queries per keyword).

## `maxQueriesPerKeyword` (type: `integer`):

Cap on the number of suggestion requests made per seed, across expansions and depth.

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

Language code sent as Accept-Language, e.g. en, de, es, pt, ja. Pinterest also localises by exit IP.

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

Two-letter country code. us uses www.pinterest.com; gb uses uk.pinterest.com; any other two-letter code uses that subdomain (de.pinterest.com, fr.pinterest.com). Pinterest also localises by exit IP; turn on Apify Proxy and pin a country for a genuine other market.

## `dedupe` (type: `boolean`):

Keep the first occurrence of each suggestion per seed keyword (case-insensitive).

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

Apify Proxy, datacenter by default (leave proxy groups empty). The run rotates its session on HTTP 429 or 403. Residential is optional if datacenter is blocked.

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

Parallel suggestion requests. 3 is the house default; up to 10 with Apify Proxy.

## `pacingMs` (type: `integer`):

Base jittered delay between requests per worker; 0 disables pacing.

## Actor input object example

```json
{
  "keywords": [
    "makeup"
  ],
  "expansions": [
    "alphabet",
    "questions",
    "prepositions"
  ],
  "depth": 1,
  "maxQueriesPerKeyword": 300,
  "language": "en",
  "region": "us",
  "dedupe": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxConcurrency": 3,
  "pacingMs": 200
}
```

# Actor output Schema

## `suggestions` (type: `string`):

All suggestion rows (one per suggestion per seed).

## `csv` (type: `string`):

The same rows as CSV.

# 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 = {
    "keywords": [
        "makeup"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tallyrake/pinterest-autocomplete-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 = { "keywords": ["makeup"] }

# Run the Actor and wait for it to finish
run = client.actor("tallyrake/pinterest-autocomplete-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 '{
  "keywords": [
    "makeup"
  ]
}' |
apify call tallyrake/pinterest-autocomplete-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tallyrake/pinterest-autocomplete-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/b5XlUOlEkkJYLoM7n/builds/ZnKSydaF4aBL7Un48/openapi.json
