Yandex Search API

Organic results, ads, knowledge-graph cards, inline image strips and inline video carousels from Yandex search, plus the dedicated Images and Videos verticals — across 6 regional domains and 18 language codes, with pagination handled for you.

MEDIAN LAGon demand
PARAMETERS14
TOTAL USERS1,978
MONTHLY ACTIVE43
RUNS SUCCEEDED91.7%
RATING4.43 (5)

Input parameters

PARAMETERTYPEREQDEFAULTDESCRIPTION
text string yes The search term, exactly as you would type it into Yandex
yandex_domain enum no yandex.com One of 6 regional domains: .com .ru .by .kz .uz .com.tr
lang enum no domain default 18 language codes; comma-separated values allowed for multi-language
lr integer no domain default Region ID limiting results to a geography (225=Russia, 84=US, 159=Kazakhstan …)
max_pages integer no 2 0 = no limit — drives your bill
groups_on_page integer no 10 Result groups per page, 1–20
include_organic_results boolean no true Organic rows, as item_type 'organic'
include_ads boolean no false Paid placements, as item_type 'ads'
include_knowledge_graph boolean no false Entity card for people, shows, places and brands
include_image_search boolean no false Runs the query through the dedicated Yandex Images vertical
include_video_search boolean no false Runs the query through the dedicated Yandex Videos vertical
period enum no all Recency window: all · day · last_two_weeks · month
sort_mode enum no relevance relevance or date
family_mode integer no 1 Safe search: 0 off · 1 moderate · 2 strict

Worked examples

Basic — one query, defaults
{ "text": "python tutorial" }
Regional — domain, language, pagination
{
  "text": "machine learning",
  "yandex_domain": "yandex.ru",
  "lang": "ru",
  "max_pages": 3
}
Rank tracking — deeper pagination, ads included
{
  "text": "crm система",
  "yandex_domain": "yandex.ru",
  "max_pages": 5,
  "include_ads": true
}
Images vertical — filtered by orientation and recency
{
  "text": "moscow architecture",
  "include_image_search": true,
  "image_orientation": "horizontal",
  "image_recent": true
}
Fresh results only — last 24 hours, newest first
{
  "text": "нефть цена",
  "yandex_domain": "yandex.ru",
  "period": "day",
  "sort_mode": "date"
}
POWER-USER TIP
Each result type is its own dataset item — Organic rows, ads, the knowledge graph and the media panels arrive as separate items tagged with item_type rather than nested inside one blob. Filter on item_type and you can route organic and paid results down different paths without post-processing.

Coverage

6
regional domains — .com .ru .by .kz .uz .com.tr
18
language codes — Russian, English, Turkish, Kazakh, Uzbek +13
7
result types — organic · ads · knowledge graph · inline images · inline videos · image search · video search

Tasks

Saved runs with the inputs already filled in — each one a standalone page and a working configuration example.

Request a task →

Code

curl

curl -X POST "https://api.apify.com/v2/acts/johnvc~Scrape-Yandex/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"text":"machine learning","yandex_domain":"yandex.ru","lang":"ru","max_pages":3}'

Python

from apify_client import ApifyClient

client = ApifyClient("APIFY_TOKEN")
run = client.actor("johnvc/Scrape-Yandex").call(
    run_input={"text": "crm software", "max_pages": 5, "include_ads": True}
)
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item.get("item_type"), item.get("title"))

What people use it for

Alternatives