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
npx -y skills add johnisanerd/claude-skill-yandex-rank-tracker --skill apify-yandex-rank-trackerAssembled 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
- Apify account (sign up at https://apify.com?fpr=9n7kx3&fp_sid=skillrepo).
- Authentication via
apify login, or anAPIFY_TOKENenvironment variable (Apify Console, Settings, Integrations).
The Actor
- Store page: https://apify.com/johnvc/yandex-scrape-yandex-search-results-at-scale---per-result?fpr=9n7kx3&fp_sid=skillrepo
- Actor ID:
johnvc/yandex-scrape-yandex-search-results-at-scale---per-result - Pricing: pay per result, meaning per dataset item, plus a negligible start fee (see
references/gotchas.md).
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
- Pin the market. One tracked keyword is one Actor input. Set
yandex_domain,lang, andlrtogether so the position you record is reproducible. Positions differ by region, so a rank history is only comparable when these three stay fixed. - Set the depth.
max_pages1 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. - 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.
- Find the position. Read the item where
item_typeisorganic, walkorganic_results, and match your domain againstlinkordisplayed_link. Domain matching ondisplayed_linkis more forgiving than exact URL matching. A page-2 item continues the numbering from page 1, sopositionis a SERP-wide rank. - Log it. Store keyword,
search_timestamp,search_domain,search_location, matchedposition(or "not found in N results"), and the matchedlink. That row is the rank history. Not found is a real data point, so keep it. - 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 keywordyandex_domain(enum):yandex.com,yandex.ru,yandex.by,yandex.kz,yandex.uz,yandex.com.trlang(enum, 19 languages) andlr(region ID string, for example213Moscow,2Saint Petersburg,225Russia,84USA)max_pages(integer, default 2, max 100): tracking depth and the cost driverinclude_organic_results(boolean, default true): leave on for rank worksort_modeandperiod: leave atrelevanceandallfor 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
lrregion. Yandex results move, so two runs minutes apart can differ by a position or two. - Change
yandex_domain,lang, orlrand 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 yourmax_pagesdepth. Raisemax_pagesby one and retry before concluding it does not rank. - Positions look wrong for the market:
lralone does not switch language. Setyandex_domain,lang, andlrtogether. - Fewer pages than
max_pages: Yandex ran out of results. Checkpagination_limit_reachedandpages_processedon the item. - Position jumps run to run: compare
search_locationandsearch_languageon 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
- Yandex Search Scraper, pay per event edition (full SERP reads): https://apify.com/johnvc/Scrape-Yandex?fpr=9n7kx3&fp_sid=skillrepo
- Yandex Reverse Image Search API: https://apify.com/johnvc/yandex-reverse-image-search?fpr=9n7kx3&fp_sid=skillrepo
- Baidu Search Scraper (Chinese market): https://apify.com/johnvc/Baidu-Search-Scraper?fpr=9n7kx3&fp_sid=skillrepo
- Naver Search API (Korean market): https://apify.com/johnvc/naver-search-api?fpr=9n7kx3&fp_sid=skillrepo
What ships with it: 2 files
6.2 KB alongside SKILL.md
references/
- actor-index.md2.0 KB
- gotchas.md4.2 KB
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.