# Blibli Search Keyword Autocomplete & Suggester (`zucchini_gopher_m2v/blibli-keyword-suggester`) Actor

Harvest the keyword suggestions Blibli's search box shows shoppers, expanded far beyond the visible list, each with a measured count of competing products. For merchants optimising product titles and marketplace SEO. No login needed.

- **URL**: https://apify.com/zucchini\_gopher\_m2v/blibli-keyword-suggester.md
- **Developed by:** [Faisal Ahdan naufal](https://apify.com/zucchini_gopher_m2v) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 keywords

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Blibli Search Keyword Autocomplete & Suggester

Harvest the keyword suggestions [Blibli](https://www.blibli.com)'s search box
shows shoppers — expanded far beyond the handful you can see — each with a
**measured count of competing products** so you know which terms you can
actually rank for.

For merchants optimising product titles and marketplace SEO.

No login, no API key. HTTP-only — no browser.

### ⚠️ About "search volume"

**Blibli does not publish search volume, and this actor does not invent one.**

Measured: across 65 autocomplete suggestions from 10 prefixes, every
volume-shaped field (`productCount`, `count`) was null and `dsScore` was
`0.0` on every row. No endpoint in the search family exposes a volume,
impression count or frequency.

What you get instead — both real, both measured:

- **`competingProducts`** — how many products Blibli actually returns for the
  keyword. This is the number that decides whether you can rank: `laptop`
  returns 58,744 competing products, `laptop gaming` 6,639, `laptop advan`
  644\.
- **`suggestPosition`** — rank inside Blibli's own autocomplete ordering,
  which comes from their relevance model. An ordinal popularity signal, not
  a volume.

If you need true search volume, no public Blibli surface provides it.

### What it does that the search box doesn't

Typing a seed into Blibli shows you ~6 suggestions. This actor appends every
letter a–z to the seed and collects each different slice of the suggestion
index:

| Query | Keywords found |
| --- | --- |
| `laptop` typed into the search box | **6** |
| this actor, `expansionMode: alphabet` | **147** |

31 of those 147 don't even start with "laptop" — `asus laptop`,
`backpack laptop`, `tote bag laptop`, `tas laptop jinjing`. Those are the
terms you'd never have thought to check.

### Output

```json
{
  "keyword": "laptop hp official store",
  "seedKeyword": "laptop",
  "source": "autocomplete",
  "sourcePrefix": null,
  "suggestPosition": 5,
  "competingProducts": 335,
  "competitionLevel": "LOW",
  "wordCount": 4,
  "isLongTail": true,
  "containsSeed": true,
  "searchUrl": "https://www.blibli.com/cari/laptop%20hp%20official%20store"
}
```

Sort the dataset by `competingProducts` ascending and the top rows are your
SEO opportunities — real demand (Blibli suggests them) with little
competition:

```
Anti Aging Diskon hingga 60%        3 products   LOW    (curated)
sepatu pria kanky                  42 products   LOW    (related)
isolasi listrik nitto              85 products   LOW    (trending)
laptop hp official store          335 products   LOW    (autocomplete)
```

### Input

```json
{
  "seedKeywords": ["laptop", "sepatu pria"],
  "expansionMode": "alphabet",
  "includeCompetition": true,
  "includeTrending": true
}
```

| Field | Description |
| --- | --- |
| `seedKeywords` | Terms to expand |
| `expansionMode` | `none` (1 req/seed), **`alphabet`** (27), `alphanumeric` (37), `related` (2), `full` (38) |
| `includeCompetition` | Measure competing products per keyword — 1 extra request each |
| `includeTrending` | Add marketplace-wide trending searches (works with no seeds) |
| `includeCurated` | Add Blibli's curated promo keywords, with their promo URLs |
| `minWordCount` | Set to `3` to harvest long-tail terms only |
| `maxKeywordsPerSeed`, `maxConcurrency` | Volume and politeness |
| `proxyConfiguration` | Residential + country `ID` recommended |

### Four keyword sources in one run

| `source` | What it is |
| --- | --- |
| `autocomplete` | Suggestions for the bare seed |
| `autocomplete-expansion` | Suggestions for seed + a suffix (`sourcePrefix` records which) |
| `related-search` | Blibli's "refine your search" terms |
| `trending` | Marketplace-wide trending searches |
| `curated` | Editorially promoted keywords, with `promoUrl` |

Everything is deduplicated across sources and seeds in a single run.

### Known limits

- **No search volume** — see above.
- `competitionLevel` bands are a convenience from this actor, not a Blibli
  metric; `competingProducts` is the real number.
- Autocomplete reflects what an anonymous Indonesian visitor sees — the right
  baseline for marketplace SEO, but a logged-in shopper's box may differ.
- Suggestions are in Indonesian, as shoppers type them.
- With `alphabet` + competition on, a single seed is ~27 + N requests; use a
  residential proxy for large seed lists.

See [CRAWLING\_METHOD.md](CRAWLING_METHOD.md) for the endpoint map, the
`searchTermPrefix` parameter trap, the endpoints that return 500, and the
measured expansion figures.

# Actor input Schema

## `seedKeywords` (type: `array`):

Starting terms to expand, e.g. \["laptop", "sepatu pria"]. Each seed is run through Blibli's live autocomplete and, with expansion on, through a suffix sweep that pulls far more of the suggestion index.

## `expansionMode` (type: `string`):

How hard to mine each seed. A bare seed returns only a handful of suggestions (measured: 6 for 'laptop'); appending letters pulls a different slice each time (measured: 67 unique keywords from a-j alone). 'related' adds Blibli's 'refine your search' terms. 'full' does both plus digits.

## `includeCompetition` (type: `boolean`):

For every keyword, count how many products Blibli actually returns for it - the number that tells you how hard the keyword is to rank for. Costs one extra request per keyword. See the README: Blibli publishes no search volume, and this is the measured figure offered in its place.

## `includeTrending` (type: `boolean`):

Add Blibli's marketplace-wide trending search terms as extra rows. Works with no seed keywords at all.

## `includeCurated` (type: `boolean`):

Add the editorially curated keywords Blibli promotes in its search box, each with the promo page it links to.

## `minWordCount` (type: `integer`):

Keep only keywords with at least this many words. Set to 3 to harvest long-tail terms only - easier to rank for and usually higher-converting. 0 disables.

## `maxKeywordsPerSeed` (type: `integer`):

Stop after this many keywords per seed. 0 means no limit - harvest whatever the expansion plan yields.

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

Parallel competition lookups. Keep low to stay under Blibli's rate limiting.

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

Blibli is behind Cloudflare and throttles sustained traffic from one IP. Apify Residential proxy with country 'ID' is recommended, especially with expansion and competition measurement on.

## Actor input object example

```json
{
  "seedKeywords": [
    "laptop"
  ],
  "expansionMode": "alphabet",
  "includeCompetition": true,
  "includeTrending": false,
  "includeCurated": false,
  "minWordCount": 0,
  "maxKeywordsPerSeed": 0,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Harvested keywords with competition data.

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

// Run the Actor and wait for it to finish
const run = await client.actor("zucchini_gopher_m2v/blibli-keyword-suggester").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 = { "seedKeywords": ["laptop"] }

# Run the Actor and wait for it to finish
run = client.actor("zucchini_gopher_m2v/blibli-keyword-suggester").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 '{
  "seedKeywords": [
    "laptop"
  ]
}' |
apify call zucchini_gopher_m2v/blibli-keyword-suggester --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zucchini_gopher_m2v/blibli-keyword-suggester"
        }
    }
}

```

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/axGvMsJD3CcBPCo4f/builds/Eh3BGTqHlqudnRcew/openapi.json
