# Long-Tail Keyword Finder — Long Tail Pro Alternative (`khadinakbar/longtailpro-alternative`) Actor

Find long-tail keyword ideas from seed phrases. Export search volume, CPC, competition, available difficulty and intent, plus a transparent opportunity score for content planning. Supply your DataForSEO credentials.

- **URL**: https://apify.com/khadinakbar/longtailpro-alternative.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** SEO tools, Automation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.00 / 1,000 long-tail keyword candidates

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

## Long-Tail Keyword Finder — Long Tail Pro Alternative

Find long-tail keyword ideas from seed phrases. Export search volume, CPC, competition, available difficulty and intent, plus a transparent opportunity score for content planning. Supply your DataForSEO credentials. For SEO planners, each dataset record is one keyword candidate with market metrics and a transparent opportunity calculation.

### Workflow: put the results to work

Enter a small set of seed phrases and select the market your audience searches in. Filter by available volume and difficulty, then review the opportunity score alongside intent. Compare phrases within the same market before turning the shortlist into content briefs.

### Best fit for this Actor

Start with this Actor when you need a current Google keyword-research export: related phrases, average monthly search volume, CPC, paid competition, available keyword difficulty, search intent, and SERP feature types for a chosen DataForSEO location and language.

Choose the `low_competition` profile to sort for lower reported difficulty, `commercial` when commercial or transactional intent matters most, or `balanced` for a general shortlist. Then use the existing Keyword Research API for a simpler ideas-or-exact-volume export that continues research after you have a short candidate list.

This is a focused long-tail research workflow. For daily rank tracking, backlink analysis, domain projects, historical dashboards, team collaboration, or a full SERP export, start with the broader suite that includes those capabilities.

### What one result means

One row represents one DataForSEO-returned keyword candidate after the selected volume and difficulty filters. Metric fields keep their provider meaning; `opportunityScore` is a documented Actor heuristic for prioritization alongside editorial review.

| Field | Meaning |
| --- | --- |
| `keyword` | The candidate keyword phrase. |
| `searchVolume` | Provider-reported average monthly Google search-volume estimate. |
| `keywordDifficulty` | Provider-reported difficulty when available. |
| `cpcUsd` and `competition` | Provider-reported paid-search signals. |
| `searchIntent` and `serpFeatures` | Available intent and result-type context. |
| `opportunityScore` | Transparent 0–100 prioritization heuristic. |
| `recommendation` | `prioritize`, `consider`, or `review` grouping. |
| `candidateReasons` | Plain-language signals behind the retained candidate. |
| `retrievedAt` and `provenance` | Collection time and exact provider endpoint. |

Example output:

```json
{
  "runId": "example-run",
  "keyword": "best project management software for small teams",
  "seedKeywords": ["project management software"],
  "isLongTail": true,
  "wordCount": 7,
  "searchVolume": 1200,
  "monthlySearches": [],
  "cpcUsd": 1.2,
  "competition": 0.4,
  "competitionLevel": "MEDIUM",
  "keywordDifficulty": 32,
  "competitionAssessment": "moderate",
  "searchIntent": "commercial",
  "serpFeatures": ["people_also_ask"],
  "opportunityProfile": "low_competition",
  "opportunityScore": 76,
  "recommendation": "prioritize",
  "candidateReasons": ["Contains three or more words, so it is treated as a long-tail phrase."],
  "locationCode": 2840,
  "languageCode": "en",
  "providerTaskId": "provider-task-example",
  "retrievedAt": "sample retrieval timestamp",
  "provenance": {
    "source": "DataForSEO API v3",
    "endpoint": "dataforseo_labs/google/keyword_ideas/live",
    "metricNotes": "Search volume, CPC, paid competition, intent, and difficulty are provider metrics."
  }
}
```

### Quick start

```json
{
  "seedKeywords": ["project management software"],
  "locationCode": 2840,
  "languageCode": "en",
  "maxResults": 25,
  "minSearchVolume": 100,
  "maxKeywordDifficulty": 35,
  "opportunityProfile": "low_competition",
  "includeSerpFeatures": true
}
```

The default location code is `2840` (United States). `maxResults` is capped at 100. Use only location and language combinations supported by DataForSEO.

### Workflow story

A content lead preparing a small-business project-management cluster starts with `project management software`, asks for US-English candidates under a difficulty threshold of 35, and receives a short list ordered by `opportunityScore`. They can retain source metrics in the content brief, use `candidateReasons` to explain why a phrase was selected, and re-run the exact JSON later with a fresh `retrievedAt` time.

### API and dataset readback

Start the Actor with an Apify token, then read its default dataset after it reaches a terminal outcome:

```bash
curl -sS -X POST "https://api.apify.com/v2/acts/khadinakbar~longtailpro-alternative/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"seedKeywords":["project management software"],"locationCode":2840,"languageCode":"en","maxResults":25,"maxKeywordDifficulty":35}'
```

Read `OUTPUT` for the compact terminal outcome and `RUN_SUMMARY` for provider attempts, cost, filters, warnings, and persisted-item counts. `COMPLETE`, `PARTIAL`, `VALID_EMPTY`, and `INVALID_INPUT` are successful terminal outcomes; provider configuration and availability conditions are made explicit as `CONFIG_ERROR` or `UPSTREAM_FAILED`.

### Use from an AI agent

> Find US long-tail keyword opportunities for project management software, keep difficulty at 35 or less, and return the keyword, volume, difficulty, intent, recommendation, and provenance.

An AI agent can use the Actor through Apify MCP or the API to receive structured dataset rows rather than a dashboard screenshot. Keep the request bounded with a location, language, result limit, and difficulty threshold, then inspect the returned outcome, dataset readback, provenance, and event cost.

### How this workflow compares with Long Tail Pro

| Decision point | This Actor | Long Tail Pro and broader-suite tradeoff |
| --- | --- | --- |
| Scope | Runs the bounded keyword-discovery and prioritization workflow from JSON input. | Long Tail Pro includes broader project, rank-tracking, and backlink workflows outside this Actor's scope. |
| Billing and cost | Uses per-persisted-candidate events plus Apify platform usage; each execution can be bounded with result and charge caps. | Long Tail Pro is a subscription product; compare its current plan terms with your execution frequency before choosing. |
| Effective efficiency | Produces machine-readable rows with metrics, reasons, and provenance in one run, avoiding manual dashboard transcription. | The suite can be a better fit when operators need its workspace and recurring reporting features. |
| Output and integrations | Supports Apify API, CLI, datasets, and structured JSON readback for the focused workflow. | Direct parity with every Long Tail Pro integration or dashboard export calls for a suite-specific review. |
| Freshness and reliability | Records `retrievedAt`, provider task ID, terminal outcomes, and live execution diagnostics for each request. | Historical visibility and daily monitoring remain broader-suite requirements. |

Long Tail Pro is a trademark of its owner. This independent Actor is not affiliated, associated, or endorsed by Long Tail Pro.

### Best results and responsible use

Use specific, genuinely relevant seed phrases and review the source metrics before committing resources to a page or campaign. Keyword metrics are directional provider data that support planning and editorial judgment. This Actor uses DataForSEO's documented API and respects the focused scope described above.

### Builder's note

I designed the scoring layer to stay transparent: it prioritizes available provider volume, difficulty, CPC, intent, and phrase length, then exposes the reasons in every row. Keeping the raw metrics alongside the score makes it easy to adapt the shortlist to an editorial strategy instead of treating one opaque number as a decision.

### Pricing and run costs

This Actor uses **Pay per event plus Apify platform usage**. The [Pricing tab](https://apify.com/khadinakbar/longtailpro-alternative/pricing) lists the current event rates and billing terms.

| Event | Billing unit | When it applies |
|---|---|---|
| `apify-actor-start` | Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). |
| `long-tail-keyword` | Long-tail keyword candidate | Charged once for each validated DataForSEO candidate persisted to the dataset. |

Run cost combines the charged events and Apify platform usage. Your data-provider account may incur separate charges; eligible provider access is required. Review the run charge limit and requested result count before starting.

### Connect an AI agent

Use the [Apify MCP configurator](https://mcp.apify.com) to choose an available client connection. Inspect this Actor’s current input schema and required credentials before running it.

# Actor input Schema

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

Provide 1-5 starting phrases, for example \["project management software"]. The Actor expands these into related Google keyword candidates. Blank and duplicate values are removed. This is not a domain, URL, or Google search operator field.

## `locationCode` (type: `integer`):

Set the DataForSEO Google location code, such as 2840 for the United States. It scopes the returned keyword metrics to that geography. Defaults to 2840 and must be positive. This is not an ISO country code.

## `languageCode` (type: `string`):

Set the DataForSEO language code, such as en. It scopes the language of the idea and metric response. Defaults to en. This is not a natural-language name such as English.

## `maxResults` (type: `integer`):

Choose the maximum normalized candidates to persist. The Actor caps this at 100 to make event and provider costs predictable. Defaults to 25. This is not unbounded provider pagination.

## `minSearchVolume` (type: `integer`):

Keep candidates whose provider-reported average monthly search volume meets this floor. Defaults to zero so valid zero estimates remain visible. Use this to narrow a research export. This is not a traffic or conversion forecast.

## `maxKeywordDifficulty` (type: `integer`):

Keep candidates at or below this DataForSEO difficulty threshold. Defaults to 100, which retains available difficulty values. Set 35 for a lower-competition shortlist. This is not a guarantee of rankings.

## `opportunityProfile` (type: `string`):

Choose how the transparent opportunity score weighs retained candidates. low\_competition gives an extra preference to lower reported difficulty; commercial favors commercial or transactional intent. Defaults to low\_competition. This does not alter the provider source metrics.

## `includeSerpFeatures` (type: `boolean`):

Request available SERP feature types alongside each keyword candidate. Defaults to true to show whether the provider saw result types such as people-also-ask. This is not a live position check or full SERP export.

## `dataforSeoLogin` (type: `string`):

Provide your DataForSEO API login only when the owner secret is unavailable. This confidential value is sent only in the authorization header and is never written to the dataset, output, or logs. This is not an Apify token.

## `dataforSeoPassword` (type: `string`):

Provide your DataForSEO API password only when the owner secret is unavailable. This confidential value is sent only in the authorization header and is never written to the dataset, output, or logs. This is not your dashboard password.

## Actor input object example

```json
{
  "seedKeywords": [
    "project management software",
    "team collaboration"
  ],
  "locationCode": 2840,
  "languageCode": "en",
  "maxResults": 25,
  "minSearchVolume": 100,
  "maxKeywordDifficulty": 35,
  "opportunityProfile": "low_competition",
  "includeSerpFeatures": true,
  "dataforSeoLogin": "$YOUR_DATAFORSEO_LOGIN",
  "dataforSeoPassword": "$YOUR_DATAFORSEO_PASSWORD"
}
```

# Actor output Schema

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

Normalized and prioritized long-tail keyword candidates.

## `output` (type: `string`):

Compact terminal outcome and billing diagnostics.

## `runSummary` (type: `string`):

Detailed provider cost, filtering, and terminal diagnostics.

# 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": [
        "project management software"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/longtailpro-alternative").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": ["project management software"] }

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/longtailpro-alternative").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": [
    "project management software"
  ]
}' |
apify call khadinakbar/longtailpro-alternative --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,khadinakbar/longtailpro-alternative"
        }
    }
}

```

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/M7Heof7jMcF8HbPHi/builds/Uk45GmvtkYbHnmXFx/openapi.json
