Keyword Rank Tracker — AccuRanker Alternative avatar

Keyword Rank Tracker — AccuRanker Alternative

Pricing

from $8.00 / 1,000 rank movement report rows

Go to Apify Store
Keyword Rank Tracker — AccuRanker Alternative

Keyword Rank Tracker — AccuRanker Alternative

Track Google organic keyword ranks for a target domain. Export positions, matching URLs, SERP evidence, and search context; supply baseline ranks to calculate movement against an earlier snapshot.

Pricing

from $8.00 / 1,000 rank movement report rows

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Track Google organic keyword ranks for a target domain. Export positions, matching URLs, SERP evidence, and search context; supply baseline ranks to calculate movement against an earlier snapshot. For SEO reporting teams, each dataset row is one keyword observation with its current rank and any valid baseline comparison.

Workflow: put the results to work

Set the target domain, keyword list, country, language, and device. Supply baseline ranks when you need movement labels, then compare observations under the same settings. The Actor creates bounded snapshots; historical coverage depends on the observations you retain.

Best fit

Use this Actor when an SEO analyst, agency automation, or AI workflow needs a current, machine-readable Google rank snapshot that can be scheduled and exported through Apify. It is especially useful for a small-to-medium keyword list where explicit cost limits and raw SERP provenance matter.

Choose a full rank-tracking suite when you need retained historical dashboards, team permissions, recurring report design, Share of Voice, forecasting, or AI-search monitoring. For Google Maps grid or city-level rank analysis, use a dedicated local-rank workflow instead.

How this AccuRanker alternative workflow compares

This independent Actor is not affiliated with, associated with, or endorsed by AccuRanker. The comparison is limited to the bounded Google-rank snapshot workflow documented here.

Decision areaThis ActorAccuRanker
ScopeCurrent Google rank rows with optional caller-supplied movement comparisonBroader hosted dashboard and reporting suite
BillingPer persisted report row, plus Apify platform usagePublished monthly plan pricing
Effective efficiencyOne bounded API or scheduled execution produces export-ready rowsBetter suited to continuous dashboard operations
Input and outputDomain + keywords in, documented dataset rows outAccount-based hosted workflow and dashboards
IntegrationsApify API, datasets, and schedulesHosted-suite integrations
AutomationExplicit Apify schedule and run inputsAutomatic refreshes inside the product
Freshness and provenanceRow-level timestamp, Google results URL, and provider run IDAutomatically refreshed hosted data

This is not a claim that either product is universally better. Choose this Actor when the input/output workflow above is sufficient; choose AccuRanker when you need its retained history, collaboration, white-label reporting, Share of Voice, forecasts, or AI products.

How it works

  1. The Actor validates and deduplicates the provided keywords, then applies maxKeywords.
  2. It calls Apify's maintained Google Search Results Scraper once for the bounded batch, using your country, language, device, and depth settings.
  3. It finds the target domain in each returned organic result set. A domain absent within the requested depth is a valid row, not an error.
  4. When baselineRanks is supplied, it classifies each row as IMPROVED, DECLINED, UNCHANGED, NEW, LOST, or NOT_RANKING.
  5. It writes one complete, validated row per successful keyword plus OUTPUT and RUN_SUMMARY terminal records.

Input

{
"targetDomain": "apify.com",
"keywords": ["web scraping platform", "data extraction tools"],
"countryCode": "us",
"languageCode": "en",
"device": "desktop",
"depth": 10,
"maxKeywords": 25,
"baselineRanks": [
{
"keyword": "web scraping platform",
"found": true,
"targetRank": 6,
"checkedAt": "prior-check-timestamp"
}
]
}

Use the same country, language, device, and depth whenever you compare a trend line. baselineRanks is caller-supplied; the Actor deliberately does not claim to retain your ranking history.

Output

The rank_movement dataset view contains the report fields. serp_evidence retains the selected target result, compact top results, Google check URL, and provider run ID.

{
"keyword": "web scraping platform",
"targetDomain": "apify.com",
"found": true,
"targetRank": 3,
"rankingUrl": "https://apify.com/",
"previousRank": 6,
"rankChange": 3,
"movement": "IMPROVED",
"countryCode": "us",
"languageCode": "en",
"device": "desktop",
"depth": 10,
"checkUrl": "https://www.google.com/search?q=web+scraping+platform",
"checkedAt": "collection-timestamp",
"provider": "apify/google-search-scraper",
"providerRunId": "exampleRunId"
}

Terminal outcomes

  • COMPLETE: every selected keyword produced a persisted row.
  • PARTIAL: useful rows persisted but a provider or storage issue affected another keyword, or the execution spending cap stopped more rows.
  • VALID_EMPTY: every completed SERP check lacked the target domain inside the selected depth.
  • INVALID_INPUT: fix the supplied domain, keywords, locale, device, or depth; this ends successfully with guidance.
  • UPSTREAM_FAILED: the provider could not return usable data and no rank row was persisted.
  • CONFIG_ERROR: reserved for a required configuration fault with no useful output.

API and agent prompt

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~accuranker-alternative/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"targetDomain":"apify.com","keywords":["web scraping platform"],"countryCode":"us","languageCode":"en","device":"desktop","depth":10}'

Check apify.com for these keywords in US English desktop Google results at depth 10. Return the current rank, movement versus my supplied baseline, ranking URL, evidence URL, timestamp, and report any OUTPUT warnings. Do not use this Actor for persistent dashboard history, Share of Voice, or AI-visibility analysis.

For an AI agent or MCP workflow, read the dataset after the run and inspect OUTPUT. An INVALID_INPUT outcome means the request can be fixed without retrying the provider; PARTIAL means some rows are useful but a warning needs review; UPSTREAM_FAILED means no usable provider rows were persisted and a later retry is appropriate. The Actor does not paginate beyond the selected depth.

Limits and recovery

  • Limit each run to one hundred selected keywords and a depth of 10 or 20. This bounds both cost and provider work.
  • Google results can vary by country, language, device, timing, and SERP layout. Keep these controls fixed across a comparison.
  • If PARTIAL occurs, use the persisted rows and retry only the affected keyword set after reviewing RUN_SUMMARY.
  • If UPSTREAM_FAILED occurs, wait briefly and retry the bounded run. Do not treat an empty provider run as proof that the domain does not rank.

Freshness and methodology

The primary provider contract and price calculation are recorded in PROVIDER_PRICING.json; use the current Google Search Results Scraper input and pricing surface before making a spending decision. Each result row carries a timestamp, Google result URL, and provider run ID so a surprising position can be reviewed at its source.

Builder's note

I designed this Actor around one durable unit of work: a validated, persisted rank row with enough source context to review a surprising movement. The current Google provider is intentionally used as a focused standalone workflow, keeping the Actor free of external credential setup while preserving an explicit input-to-evidence path.

Responsible use

Use this Actor only to collect data you are authorized to access and in accordance with applicable laws, Google’s terms of service, and your organization’s policies. Rank rows are measurement evidence, not legal, traffic, revenue, or ranking guarantees.

Responsible interpretation

Every row is an observed Google SERP snapshot, not a promise of future rank, traffic, or conversion. A found: false row means the domain was absent within the selected returned depth and context. Keep the same country, language, device, and depth across comparisons. Review checkUrl, checkedAt, and providerRunId before acting on an unexpected movement.

Pricing and run costs

This Actor uses Pay per event plus Apify platform usage. The Pricing tab lists the current event rates and billing terms.

EventBilling unitWhen it applies
apify-actor-startActor StartCharged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).
rank-movement-reportRank movement report rowOne complete persisted Google rank and movement report row.

Run cost combines the charged events and Apify platform usage. Review the run charge limit and requested result count before starting.

Connect an AI agent

Use the Apify MCP configurator to choose an available client connection. Inspect this Actor’s current input schema and required credentials before running it.