A Python client for interacting with Yandex's Search API, providing easy access to Yandex search results programmatically.
- Perform searches using Yandex's Search API
- Retrieve search results in XML format
- Extract URLs from search results
- Automatic IAM token management
- Configurable search parameters (region, search type, number of results)
- Asynchronous operation with timeout handling
pip install yandex-search-apiimport logging
from yandex_search_api import YandexSearchAPIClient
from yandex_search_api.client import SearchType
def main():
# Initialize client with your credentials
client = YandexSearchAPIClient(
folder_id="your_folder_id",
oauth_token="your_oauth_token"
)
# How to get folder_id: https://yandex.cloud/en-ru/docs/resource-manager/operations/folder/get-id
# How to get oauth_token: https://yandex.cloud/en-ru/docs/iam/concepts/authorization/oauth-token
links = client.get_links(
query_text="Python library for yandex search",
search_type=SearchType.RUSSIAN,
n_links=5
)
print("Search results:", links)
if __name__ == '__main__':
main()# Perform a search and get raw XML results
operation_id = client.search(
query_text="Advanced search example",
search_type=SearchType.INTERNATIONAL,
region=Region.UKRAINE,
n_links=20
)
# Wait for results and get XML
xml_results = client.get_search_results(operation_id)
# Or use the convenience method that waits automatically
xml_results = client.search_and_wait(
query_text="Another example",
max_wait=120, # seconds
interval=5 # seconds between checks
)- Folder ID: Your Yandex Cloud folder ID https://yandex.cloud/en-ru/docs/resource-manager/operations/folder/get-id
- OAuth Token: Your Yandex OAuth token https://yandex.cloud/en-ru/docs/iam/concepts/authorization/oauth-token
-
search_type:SearchType.RUSSIAN(default)SearchType.TURKISHSearchType.INTERNATIONAL
-
region:Region.RUSSIA(default)Region.UKRAINERegion.BELARUSRegion.KAZAKHSTAN
-
n_links: Number of results to return (default: 10) -
page: Page number (default: 0) -
max_wait: Maximum time to wait for results in seconds (default: 300) -
interval: Time between operation status checks in seconds (default: 1)
The library uses Python's logging module with logger name YandexSearchApi. Configure logging as needed:
import logging
logging.getLogger('YandexSearchApi').setLevel(logging.DEBUG)Contributions are welcome! Please open an issue or submit a pull request.