agentsclimarketplace

Apify yandex rank tracker

Skill johnisanerd/claude-skill-yandex-rank-tracker/apify-yandex-rank-tracker

Use this as a yandex rank tracker. Check where a domain or URL ranks on Yandex for a keyword, in a specific Yandex domain, language, and lr region, using the Apify Yandex Search per-result Actor (johnvc/yandex-scrape-yandex-search-results-at-scale---per-result). Each run returns ranked organic rows with position, title, link, displayed_link, and snippet, so you match your site against the SERP and log the position with the run timestamp for a rank history. Use when the user wants a yandex rank tracker or yandex rank checker, wants to check Yandex rankings or keyword positions, wants yandex tracking of a site across Moscow, Saint Petersburg, or other regions, or wants to monitor Russian-market SERP positions over time on a schedule. Pay-per-result billing, MCP-ready for Claude and other AI agents.From its SKILL.md

Install
npx -y skills add johnisanerd/claude-skill-yandex-rank-tracker --skill apify-yandex-rank-tracker

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

3 things to look at

  • 27 days oldThe repository was created 27 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

8.9 KB, ~2.1k tokens by cl100k_base, as published. Nobody here has run it

Yandex Rank Tracker: Keyword Positions by Region

Check and track where a site ranks on Yandex. One run per keyword returns the ranked organic list for a chosen Yandex domain, language, and region, with a search_timestamp on every item, so you can find your position today and keep a history of it.

When to use this skill

  • The user wants a Yandex rank tracker or a Yandex rank checker for a domain or URL.
  • They ask "where do we rank on Yandex for X" or "what position is our page in Moscow".
  • They want Yandex tracking of keyword positions on a weekly or daily schedule.
  • They are watching Russian-market or CIS-market SERP positions and want the movement, not just a one-off SERP read.

Not for: bulk SERP archives with no rank question attached (use the companion bulk Yandex scraper skill), Yandex Images or Yandex Videos vertical work, or Google positions.

What one run gives you (one dataset item per page, per result type)

Every dataset item is one page of one result type, tagged by item_type (organic runs give item_type set to organic). The ranked rows sit in the nested organic_results array on that item, each row carrying position, title, link, displayed_link, and snippet. The item itself carries the tracking context you need to store alongside the position: text (the keyword), search_timestamp, search_domain and search_domain_description, search_language and search_language_description, search_location, page_number, results_per_page, result_count, total_results_found, total_pages, pages_processed, pagination_limit_reached, max_pages_set, and pagination_stopped_by_limit. The unused result-type arrays (ads_results, knowledge_graph, inline_images, inline_videos, image_results, video_results) come back empty on an organic run.

Prerequisites

The Actor

Run it with the Apify CLI

Check the first page of Moscow rankings for a Russian keyword:

apify actors call "johnvc/yandex-scrape-yandex-search-results-at-scale---per-result" -i '{"text":"купить ноутбук","yandex_domain":"yandex.ru","lang":"ru","lr":"213","max_pages":1}' \
  --json \
  --user-agent apify-awesome-skills/apify-yandex-rank-tracker \
  2>/dev/null

Go two pages deep when the target site sits outside the top ten:

apify actors call "johnvc/yandex-scrape-yandex-search-results-at-scale---per-result" -i '{"text":"crm software","yandex_domain":"yandex.com","lang":"en","lr":"84","max_pages":2}' \
  --json \
  --user-agent apify-awesome-skills/apify-yandex-rank-tracker \
  2>/dev/null

Re-read a scheduled run's dataset later, without paying again:

apify datasets get-items <DATASET_ID> --format json --user-agent apify-awesome-skills/apify-yandex-rank-tracker 2>/dev/null

Every call carries the three flags this repo expects, --json (or --format json), --user-agent apify-awesome-skills/apify-yandex-rank-tracker, and 2>/dev/null.

Run it from Claude or another AI agent (MCP)

The Actor is MCP-ready. Add the hosted server URL:

https://mcp.apify.com/?tools=actors,docs,johnvc/yandex-scrape-yandex-search-results-at-scale---per-result

Then ask, for example, "Check where example.ru ranks on yandex.ru for 'доставка цветов' in Moscow and tell me the position." MCP setup docs: https://docs.apify.com/platform/integrations/mcp

Workflow

  1. Pin the market. One tracked keyword is one Actor input. Set yandex_domain, lang, and lr together so the position you record is reproducible. Positions differ by region, so a rank history is only comparable when these three stay fixed.
  2. Set the depth. max_pages 1 covers the top ten, which answers most rank questions. Use 2 or 3 only when the site is not on page one. Each page is one billable item.
  3. Run one keyword per run. Keep the run inputs in your own list of tracked keywords rather than trying to batch several into one query string.
  4. Find the position. Read the item where item_type is organic, walk organic_results, and match your domain against link or displayed_link. Domain matching on displayed_link is more forgiving than exact URL matching. A page-2 item continues the numbering from page 1, so position is a SERP-wide rank.
  5. Log it. Store keyword, search_timestamp, search_domain, search_location, matched position (or "not found in N results"), and the matched link. That row is the rank history. Not found is a real data point, so keep it.
  6. Schedule the repeat. Wrap the same input in an Apify Schedule for weekly or daily tracking, then diff the newest position against the previous one to report movement.

Inputs that matter for rank tracking

  • text (string, required): the tracked keyword
  • yandex_domain (enum): yandex.com, yandex.ru, yandex.by, yandex.kz, yandex.uz, yandex.com.tr
  • lang (enum, 19 languages) and lr (region ID string, for example 213 Moscow, 2 Saint Petersburg, 225 Russia, 84 USA)
  • max_pages (integer, default 2, max 100): tracking depth and the cost driver
  • include_organic_results (boolean, default true): leave on for rank work
  • sort_mode and period: leave at relevance and all for rank tracking, since sorting by date changes the ordering you are measuring

Ads, knowledge graph, inline media, and the dedicated Images and Videos verticals are billable extras that do not help a rank check. Leave them off here.

Cost

Billing is per dataset item, and one item is one page of one result type. A single-page rank check on one keyword is one item. Tracking 20 keywords weekly at one page each is 20 items per run and about 80 items a month. Multiply by the live per-result price in references/gotchas.md before committing to a schedule, and confirm the estimate with the user for anything large.

Honest limits

  • A position is the SERP at crawl time for that lr region. Yandex results move, so two runs minutes apart can differ by a position or two.
  • Change yandex_domain, lang, or lr and you have started a new series, not continued the old one.
  • The Actor returns the SERP. It does not store history for you, so the logging step is yours.
  • Only the fields listed above are guaranteed. Extra per-row fields appear only when Yandex shows them for that query.
  • No search volume, no keyword difficulty, and no competitor discovery. This measures position only.

Troubleshooting

  • Site not in organic_results: it may rank below your max_pages depth. Raise max_pages by one and retry before concluding it does not rank.
  • Positions look wrong for the market: lr alone does not switch language. Set yandex_domain, lang, and lr together.
  • Fewer pages than max_pages: Yandex ran out of results. Check pagination_limit_reached and pages_processed on the item.
  • Position jumps run to run: compare search_location and search_language on both items before assuming a real ranking change.

See references/gotchas.md for cost guardrails and error recovery, and references/actor-index.md for the Actor routing table.

Related Yandex and international SERP Actors

What ships with it: 2 files

6.2 KB alongside SKILL.md

references/

Gives 0 of the 12 instructions most quality gates skills give in ~2.1k tokens

Counted across 1,195 of the 2,094 authors here whose files we hold, read 2026-08-07

  • Read the output and check the exit codein 54 of 1195, across 14 files
  • Verify requirements using a line-by-line checklistin 53 of 1195, across 12 files
  • Identify the verification command proving the claimin 51 of 1195, across 12 files
  • Run the full verification commandin 50 of 1195, across 11 files
  • Verify output confirms the claimin 49 of 1195, across 12 files
  • Check version control diff after agent delegationin 46 of 1195, across 6 files
  • State claim with evidencein 44 of 1195, across 4 files
  • Run the test suitein 33 of 1195, across 26 files
  • Keep state in memory by defaultin 27 of 1195, across 6 files
  • Make prototype runnable with one commandin 26 of 1195, across 5 files
  • Produce a verification reportin 25 of 1195, across 14 files
  • Detect the package manager from lockfilesin 24 of 1195, across 5 files

Said here and by no other author read

  • set yandex_domain lang and lr together
  • set max_pages to 1 for top ten
  • run one keyword per run
  • match domain against displayed_link
  • log keyword timestamp domain location position and link
  • keep not found as a data point

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 326,452. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.