### Example Request URL for Contextual Advertising Keywords Source: https://apidoc.keys.so/ This is an example of a GET request URL to retrieve contextual advertising keywords for a specific group, including query parameters for sorting and pagination. ```http https://api.keys.so/report/group/context/keywords/ ``` -------------------------------- ### API Request Example for Limits Source: https://apidoc.keys.so/ Example of how to request all limits for the API. Requires an X-Keyso-TOKEN authorization header. ```http https://api.keys.so/limits/all ``` -------------------------------- ### Response Sample for Monitoring Start Source: https://apidoc.keys.so/ This is a sample JSON response indicating a successful action when starting a monitoring update. It returns an empty array. ```json { "wordstat": 2, "serp": 4 } ``` -------------------------------- ### Example Request URL for Organic Competitors Source: https://apidoc.keys.so/ This is an example of a GET request URL to retrieve organic competitors for a specific group, including query parameters for sorting and pagination. ```http https://api.keys.so/report/group/organic/concurents/ ``` -------------------------------- ### Example Request URL for Organic Site Pages Source: https://apidoc.keys.so/ This is an example of a GET request URL to retrieve organic site pages for a specific group, including query parameters for sorting and pagination. ```http https://api.keys.so/report/group/organic/sitepages/ ``` -------------------------------- ### Example Request for Group Context Ads Links Source: https://apidoc.keys.so/ This is an example of how to request links for a group's context ads, demonstrating the use of query parameters for sorting and pagination. ```http https://api.keys.so/report/group/context/ads/links/ ``` -------------------------------- ### Get Organic Site Pages with Keywords - Request Example Source: https://apidoc.keys.so/ Example URL for requesting organic search data for site pages, including keywords. This endpoint requires specifying a base region, domain, and allows for sorting and pagination. ```http https://api.keys.so/report/simple/organic/sitepages/withkeys?base=msk&domain=dodopizza.ru&sort=url%7Casc&page=1&per_page=25 ``` -------------------------------- ### Example Request for Top New Zen Publications Source: https://apidoc.keys.so/ This example demonstrates how to construct a request URL for the 'get/zen/channel/new/top/publications' endpoint. It includes query parameters for sorting, pagination, and specifying the lookback period in days. ```http https://api.keys.so/zen/channel/new/top/publications?sort=countViews%7Cdesc&page=1&per_page=25&forDay=30 ``` -------------------------------- ### Example Request for Popular Pages Source: https://apidoc.keys.so/ An example of how to request popular pages data, including domain, sorting, and pagination parameters. ```http https://api.keys.so/report/simple/links/pages?domain=dodopizza.ru&sort=numurl%7Cdesc&page=1&per_page=25 ``` -------------------------------- ### Example Request for Channel Publications Source: https://apidoc.keys.so/ This example shows how to request publications for a specific Zen channel using the 'get/zen/channel/publications' endpoint. It requires a channel identifier and supports sorting and pagination. ```http https://api.keys.so/zen/channel/publications?channel=5e428f13bf8d3263221b5924&sort=datePublishAt%7Cdesc&page=1&per_page=25 ``` -------------------------------- ### Example Request for Context Ads Report Source: https://apidoc.keys.so/ An example of how to request a report for contextual advertising ads. This includes parameters like base, domain, and sorting. ```http https://api.keys.so/report/simple/context/ads?base=msk&domain=wildberries.ru&sort=keyscnt%7Casc&page=1&per_page=25 ``` -------------------------------- ### Get Organic Competitors API Request Example Source: https://apidoc.keys.so/ This is an example of a request to the API for organic competitor data. It includes common query parameters like base, domain, sort, page, and per_page. ```http https://api.keys.so/report/simple/organic/concurents ``` -------------------------------- ### API Request Example for Robots.txt Dates Source: https://apidoc.keys.so/ Example of how to request the modification dates for a domain's robots.txt file. Requires a 'domain' query parameter and X-Keyso-TOKEN authorization. ```http https://api.keys.so/robots/dates?domain=keys.so ``` -------------------------------- ### Get AI Competitors API Request Example Source: https://apidoc.keys.so/ Example request for retrieving competitor data based on AI-generated search responses. This report is specifically for the 'msk' base and identifies competitors appearing in Yandex Alice's AI answers. ```http https://api.keys.so/report/simple/organic/ai-concurents?base=msk&domain=wildberries.ru&sort=cnt%7Cdesc&page=1&per_page=25 ``` -------------------------------- ### Successful Project Start Response Source: https://apidoc.keys.so/ A successful response indicating that the project has been started. This is the standard success message for the project start endpoint. ```json { "message": "Проект успешно запущен" } ``` -------------------------------- ### Start AI Tracker Project Source: https://apidoc.keys.so/ Starts an AI tracker project. This can be done with or without a payload to update the entire project, specific groups, systems, or prompts. ```APIDOC ## POST /ai_tracker//start ### Description Starts an AI tracker project. Optionally updates specific parts of the project like groups, systems, or prompts using a payload. ### Method POST ### Endpoint /ai_tracker//start ### Request Body - **groups** (Array of strings) - Optional - Specifies groups to update. - **systems** (Array of strings) - Optional - Specifies systems to update. - **prompts** (Array of strings) - Optional - Specifies prompts to update. ### Request Example ```json { "groups": ["Группа 1"], "systems": ["DeepSeek"], "prompts": ["Промпт"] } ``` ### Response #### Success Response (200) - **message** (string) - Indicates the project has been successfully started. #### Response Example ```json { "message": "Проект успешно запущен" } ``` ``` -------------------------------- ### Example Request for Organic Search Competitors Source: https://apidoc.keys.so/ This example shows how to request data about organic search competitors, including parameters for base domain, top results, sorting, and pagination. ```http https://api.keys.so/report/simple/organic/concurents?base=msk&domain=wildberries.ru&top=10&sort=cnt%7Casc&page=1&per_page=25 ``` -------------------------------- ### Example Request for AI Answers Report Source: https://apidoc.keys.so/ This is an example URL for requesting a report of keywords for which a site was mentioned in AI answers. It includes parameters for base, domain, sorting, and pagination. ```url https://api.keys.so/report/simple/organic/ai-answers?base=msk&domain=wildberries.ru&sort=superwsk%7Cdesc&page=1&per_page=25 ``` -------------------------------- ### Serp Parsing Results Example Source: https://apidoc.keys.so/ An example of the detailed results returned for a serp parsing query. It includes information about context hash, description, domain, position, site links, and the type of result. ```json [ { "contextHash": "15671016654706901873", "description": "деревянная теплица не дорого в Москве", "domain": "keys.so", "errors": "", "legal": "ООО «Legal»", "pos": 1, "siteLinks": [ { "did": 1, "domain": "keys.so", "text": "Keys.so", "url": "https://www.keys.so/ru/" } ], "subType": "companies.company", "title": "деревянная теплица не дорого", "type": "wizard", "url": "https://www.keys.so/ru/", "word": "деревянная теплица" } ] ``` -------------------------------- ### Start Clustering Process Source: https://apidoc.keys.so/ Initiates the clustering process for a given project. Requires the project UID. ```APIDOC ## POST /clustering ### Description Starts the clustering process for a project using its unique identifier. ### Method POST ### Endpoint https://api.keys.so/clustering ### Parameters #### Request Body - **list** (array[string]) - Required - A list of phrases to be clustered. - **base** (string) - Required - The base for clustering (e.g., 'msk'). ### Request Example ```json { "list": [ "одежда для беременных", "для беременных одежда", "одежда" ], "base": "msk" } ``` ### Response #### Success Response (200) - **uid** (string) - The unique identifier for the clustering process. - **skipped** (array[object]) - A list of phrases that were skipped during clustering, along with the reason. - **phrase** (string) - The skipped phrase. - **reason** (string) - The reason for skipping the phrase. - **skipped_count** (integer) - The total number of phrases skipped. #### Response Example ```json { "uid": "msk:44:6684baecf18566c4381fc7731925481", "skipped": [ { "phrase": "длинная фраза не прошедшая проверку...", "reason": "слишком длинная фраза" } ], "skipped_count": 1 } ``` ``` -------------------------------- ### AI Tracker Sources Chart API Request Example Source: https://apidoc.keys.so/ Example URL for fetching mention sources chart data. Customize with your ID and desired date range. ```http https://api.keys.so/ai_tracker//sources/chart?date_from=2026-03-01&date_to=2026-03-31&view=url ``` -------------------------------- ### Example Request for AI Answers Report Status Source: https://apidoc.keys.so/ This is an example URL for checking the current status of an AI answers report being generated for a specific domain. It requires the base and domain parameters. ```url https://api.keys.so/report/simple/ai-answers/state?base=msk&domain=wildberries.ru ``` -------------------------------- ### Example Request for Group Context Ads Facts Source: https://apidoc.keys.so/ This is an example of how to request facts for a group's context ads, demonstrating the use of query parameters for sorting and pagination. ```http https://api.keys.so/report/group/context/ads/facts/696b62ec6bceaf00529c4dd4bce02b47?sort=cnt%7Casc&page=1&per_page=25 ``` -------------------------------- ### Monitoring Projects Response Sample Source: https://apidoc.keys.so/ Example JSON response for listing monitoring projects, including pagination details and a list of projects with their settings and statistics. ```json { "current_page": 1, "per_page": 25, "last_page": 85, "total": 2124, "data": [ { "id": 146, "name": "keys.so - мониторинг", "search_settings": [ { "engine_name": "Яндекс (десктоп)", "language": 0, "region_id": 38, "region_name": "Волгоград", "search_engine": 0 } ], "numwords": 2, "avg_pos": 0, "delta_avg_pos": 0, "created_at": "2025-04-15 14:00:14", "last_finished_at": null, "next_start_at": null, "child_projects": { "cluster": { "uid": "4591b69b06d4359229d919c494c17c84", "name": "Проект от 15.04.2025, 14:00" }, "serp": [ { "id": 123, "name": "keys.so - monitoring - Волгоград" } ], "wordstat": [ { "id": 123, "name": "keys.so - monitoring - Волгоград" } ] } } ] } ``` -------------------------------- ### Get Lost Keywords - Request Example Source: https://apidoc.keys.so/ Example URL for requesting lost keywords data. This endpoint is used to identify keywords that were previously ranking but are no longer appearing in organic search results for a given domain. ```http https://api.keys.so/report/simple/organic/lost_keywords?base=msk&domain=dodopizza.ru&sort=pos%7Casc&page=1&per_page=25 ``` -------------------------------- ### List Clustering Projects Query Parameters Source: https://apidoc.keys.so/ Example of query parameters for listing clustering projects, including pagination and sorting. ```json { "current_page": 1, "per_page": 25, "last_page": 85, "total": 2124, "data": [ { "access_date": "2024-04-22 04:03:27", "base": "msk", "canChangeOwner": true, "canDelete": true, "child_projects": { "serp": [ { "id": 6178, "name": "keys.so - monitoring - Волгоград" } ], "wordstat": [ { "id": 37941, "name": "keys.so - monitoring - Волгоград" } ] }, "create_date": "2024-04-22 04:03:15", "monitoring_id": 0, "monitoring_name": "keys.so", "name": "qwerty", "owner": "example@example.ru", "state": 10, "uid": "94e99ef90a8fa62000227d5bc122e5c42123" } ] } ``` -------------------------------- ### Get Group Report List Response Sample Source: https://apidoc.keys.so/ Example JSON response for a successful request to list group reports. It includes pagination details and a list of report data. ```json { "current_page": 1, "per_page": 25, "last_page": 85, "total": 2124, "data": [ { "rid": "3aa8f6a2603adc6fe499d42dcf82a4c8", "name": "asa1d", "base": "msk", "top": 10, "create_date": "2024-04-22 04:03:15", "access_date": "2024-04-22 04:03:27", "state": 10, "owner": "example@example.ru", "canDelete": true, "canChangeOwner": true } ] } ``` -------------------------------- ### Get Group Report State Response Sample Source: https://apidoc.keys.so/ Example JSON response indicating the processing status and progress of a group report. 'state' and 'progress' fields provide current status. ```json { "state": 10, "progress": 100 } ``` -------------------------------- ### Get System Keywords Response Sample Source: https://apidoc.keys.so/ This is a sample JSON response for the 'post/report/system_keywords' endpoint, detailing pagination and a list of system keywords with their associated metrics. ```json { "current_page": 1, "per_page": 25, "last_page": 85, "total": 2124, "data": [ { "adscnt": 16075, "superwsk": 32765856, "ws": 14791338, "wsk": 86990, "docs": 732392, "numwords": 1, "word": "ютуб", "updated_at": "26.05.2024", "isgeo": 0, "isquest": 0, "isadult": 0, "gctr": 0, "gamn": 0, "avbid": 0 } ] } ``` -------------------------------- ### SERP Parsing Task List Query Parameters Source: https://apidoc.keys.so/ This example demonstrates query parameters for fetching a list of SERP parsing tasks. The 'isMain' parameter filters by project type, while 'page', 'per_page', and 'sort' control pagination and ordering. ```http https://api.keys.so/serp?sort=created_at%7Cdesc&page=1&per_page=25 ``` -------------------------------- ### Response Sample for Project Data (200 OK) Source: https://apidoc.keys.so/ This JSON represents sample data for a monitoring project, including its progress and details of tracking items. ```json { "": { "progress": 50, "details": [ { "name": "Яндекс (десктоп) - Волгоград", "type": "serp", "progress": 50 } ] } } ``` -------------------------------- ### Get Competitor Pages Source: https://apidoc.keys.so/ Retrieves a list of competitor pages for a given ID. Supports pagination, filtering, and consideration of GET parameters. ```APIDOC ## GET /serp/{id}/competitor-pages ### Description Retrieves a list of competitor pages for a given ID. Supports pagination, filtering, and consideration of GET parameters. ### Method GET ### Endpoint https://api.keys.so/serp//competitor-pages ### Query Parameters - **page** (integer, optional, default: 1) - Page number of the results. - **per_page** (integer, optional, default: 25) - Number of results per page. - **organic** (boolean, optional, default: true) - Whether to include organic search data. - **context** (boolean, optional, default: true) - Whether to include contextual advertising data. - **paramsGET** (boolean, optional, default: true) - Whether to consider GET parameters. ### Authorization _X-Keyso-TOKEN_ _auth-token_ ### Responses #### Success Response (200) Returns a JSON object containing competitor page data. ```json { "total": 150, "data": [ { "cnt": 5, "did": 29918164, "domain": "keys.so", "url": "/ru/projects", "full_url": "keys.so/ru/projects" } ] } ``` #### Error Responses - **401**: Unauthorized. Invalid or missing authentication token. - **404**: Not Found. Resource, domain, phrase, or channel not found. - **429**: Too Many Requests. Rate limit exceeded for the current plan. Check `Retry-After` header for delay. - **500**: Internal Server Error. An unexpected error occurred on the server. ``` -------------------------------- ### Response Sample for Competitor Share Source: https://apidoc.keys.so/ Example JSON response for the competitor share by keywords endpoint, showing pagination and data for competing sites. ```json { "current_page": 1, "per_page": 25, "last_page": 85, "total": 2124, "data": [ { "id": 1089273244, "it1": 86, "it3": 302770, "it5": 45527, "it10": 742944, "it50": 1683529, "name": "lamoda.ru", "perc": 28.1, "spec": 16, "gar": 19, "cnt": 1 } ] } ``` -------------------------------- ### Get System Keywords Request Sample Source: https://apidoc.keys.so/ This is a sample JSON payload for the 'post/report/system_keywords' endpoint, used to specify parameters for retrieving system keywords. ```json { "params": { "filter": "string", "per_page": 25, "page": 1, "sort": "string" } } ``` -------------------------------- ### Get Keywords Response Sample Source: https://apidoc.keys.so/ This JSON sample illustrates the response structure for retrieving keywords within a specific cluster node and folder. It includes pagination details and a list of keywords with their associated metrics. ```json { "current_page": 1, "per_page": 25, "last_page": 85, "total": 2124, "data": [ { "id": 1089273244, "adscnt": 16075, "isgeo": 0, "isquest": 0, "master_key": 1, "numwords": 4, "word": "создать игру на андроид", "ws": 1479, "wsk": 869 } ] } ``` -------------------------------- ### Get Keywords by List Response Sample Source: https://apidoc.keys.so/ This is a sample JSON response for the get/tools/keywords_by_list endpoint, showing the structure of returned keyword data including metrics like search volume and ad count. ```json { "current_page": 1, "per_page": 25, "last_page": 85, "total": 2124, "data": [ { "word": "pizza", "ws": 14791338, "wsk": 86990, "numwords": 5, "adscnt": 16075, "docs": 732392, "avbid": 5, "isgeo": 0, "isquest": 0, "serpf": "24.09.2022" } ] } ``` -------------------------------- ### Start AI Tracker Project (No Payload) Source: https://apidoc.keys.so/ Initiates an AI tracker project without any specific payload, updating the entire project configuration. Use this for a full project refresh. ```json { } ``` -------------------------------- ### Get Subdomains Report Source: https://apidoc.keys.so/ Retrieves a report of subdomains for a given domain. ```APIDOC ## GET /report/owner/subdomains ### Description Retrieves a report of subdomains for a given domain. ### Method GET ### Endpoint https://api.keys.so/report/owner/subdomains ### Parameters #### Query Parameters - **base** (string) - Required - The regional database to use for the query. Enum: "msk", "gru", "zen", "gkv", "rnd", "ekb", "ufa", "sar", "krr", "prm", "sam", "kry", "oms", "kzn", "che", "nsk", "nnv", "vlg", "vrn", "spb", "mns", "tmn", "gmns", "tom", "gny". Default: "msk". - **id** (string) - Required - The domain name. - **page** (integer) - Optional - The page number of the results. Default: 1. - **per_page** (integer) - Optional - The number of results per page. Default: 25. - **sort** (string) - Optional - The sorting order for the data. Format: `field|direction`, e.g., `pos|asc` or `pos|asc,wsk|desc`. - **filter** (string) - Optional - For filtering data. See the Filtering Data section for details. ### Responses #### Success Response (200) - **current_page** (integer) - Current page number. - **per_page** (integer) - Number of results per page. - **last_page** (integer) - The last page number. - **total** (integer) - Total number of results. - **data** (array) - An array of subdomain data. - **adcost** (integer) - Advertising cost. - **adkeyscnt** (integer) - Number of advertising keywords. - **adscnt** (integer) - Number of advertisements. - **adtraf** (integer) - Advertising traffic. - **it3** (integer) - Traffic from top 3 keywords. - **it5** (integer) - Traffic from top 5 keywords. - **it10** (integer) - Traffic from top 10 keywords. - **it50** (integer) - Traffic from top 50 keywords. - **name** (string) - Subdomain name. - **pagesinindex** (integer) - Number of pages in the index. - **vis** (integer) - Visibility score. - **rsya** (integer) - Yandex Direct cost. ### Response Example ```json { "current_page": 1, "per_page": 25, "last_page": 85, "total": 2124, "data": [ { "adcost": 11109590, "adkeyscnt": 732392, "adscnt": 16075, "adtraf": 33507, "it3": 302770, "it5": 455279, "it10": 742944, "it50": 1683529, "name": "rtvi.com", "pagesinindex": 117711, "vis": 1, "rsya": 1654 } ] } ``` ``` -------------------------------- ### Get Zen Dashboard Source: https://apidoc.keys.so/ Retrieves the dashboard data for a specified Zen channel. ```APIDOC ## GET /zen/dashboard ### Description Retrieves the dashboard data for a specified Zen channel. ### Method GET ### Endpoint https://api.keys.so/zen/dashboard ### Query Parameters - **channel** (string, required) - The name or URL of the Zen channel (e.g., `channel=https://dzen.ru/textru`). ### Authorization _X-Keyso-TOKEN_ _auth-token_ ### Responses #### Success Response (200) Returns a JSON object with Zen channel dashboard statistics. ```json { "name": "Text.ru - пиши и проверяй", "description": "", "url": "https://zen.yandex.ru/id/5e428f13bf8d3263221b5924", "logo": "https://avatars.dzeninfra.ru/get-zen-logos/1520972/pub_5e428f13bf8d3263221b5924_6273955f58fe4c62b08e0d42/xxh", "countViews": 27594, "countViewsRank": 147512, "countTillEndRank": 146498, "countTillEnd": 24120, "countPosts": 115, "subscribers": 868, "isActive": true, "parsedAt": { "date": "2024-06-03 00:00:00.000000", "timezone_type": 3, "timezone": "Europe/Moscow" } } ``` #### Error Responses - **401**: Unauthorized. Invalid or missing authentication token. - **404**: Not Found. Resource, domain, phrase, or channel not found. - **429**: Too Many Requests. Rate limit exceeded for the current plan. Check `Retry-After` header for delay. - **500**: Internal Server Error. An unexpected error occurred on the server. ``` -------------------------------- ### Compare Competitors Response Sample (200 OK) Source: https://apidoc.keys.so/ This is a sample JSON response for a successful competitor comparison request. It includes domain data and join information. ```json { "domainData": [ { "id": 1089273244, "it1": 86, "it5": 45527, "it10": 742944, "it50": 1683529, "name": "lamoda.ru", "adcost": 1110959, "adkeyscnt": 73239, "adscnt": 16075, "adTraf": 75 } ], "joins": [ { "sets": [ 30457180, 277076264 ], "size": 183 } ] } ``` -------------------------------- ### Get Project Status Source: https://apidoc.keys.so/ Checks the completion status of a Wordstat project update. ```APIDOC ## GET /wordstat/get-project-status ### Description Checks the completion status of a Wordstat project update. ### Method GET ### Endpoint https://api.keys.so/wordstat/get-project-status ### Parameters #### Query Parameters - **id** (integer) - Required - The ID of the project. ### Response #### Success Response (200) Returns the completion status of the update. #### Response Example ```json { "batches": 1, "batches_total": 10 } ``` ``` -------------------------------- ### Get Domain Advertising History Source: https://apidoc.keys.so/ Retrieves the advertising history for a given domain. ```APIDOC ## GET /report/simple/domain_ad_history ### Description Retrieves the advertising history for a given domain. ### Method GET ### Endpoint https://api.keys.so/report/simple/domain_ad_history ### Parameters #### Query Parameters - **base** (string) - Required - The regional database to use for the query. Enum: "msk", "gru", "zen", "gkv", "rnd", "ekb", "ufa", "sar", "krr", "prm", "sam", "kry", "oms", "kzn", "che", "nsk", "nnv", "vlg", "vrn", "spb", "mns", "tmn", "gmns", "tom", "gny". Default: "msk". - **domain** (string) - Required - The domain name for which to retrieve advertising history. ``` -------------------------------- ### Get Completed Wordstat Projects Source: https://apidoc.keys.so/ Retrieves a list of completed Wordstat projects by their IDs. ```APIDOC ## GET /wordstat/get-projects-completed ### Description Retrieves a list of completed Wordstat projects based on a comma-separated list of project IDs. ### Method GET ### Endpoint https://api.keys.so/wordstat/get-projects-completed ### Parameters #### Query Parameters - **ids** (string) - Required - Example: `ids=5672,3421,342`. A comma-separated string of project IDs. ### Responses #### Success Response (200) - **current_page** (integer) - The current page number. - **last_page** (integer) - The last page number. - **per_page** (integer) - The number of items per page. - **total** (integer) - The total number of items. - **data** (array) - An array of completed project objects. - **id** (integer) - The project ID. - **base** (integer) - Base value. - **name** (string) - The project name. - **batches** (integer) - Number of batches. - **batches_total** (integer) - Total number of batches. - **created_at** (string) - The creation timestamp. - **updated_at** (string) - The update timestamp. - **swsk_sum** (integer) - SWSK sum. - **ws_sum** (integer) - WS sum. - **words_count** (integer) - The number of words in the project. #### Response Example (200) ```json { "current_page": 1, "last_page": 85, "per_page": 25, "total": 2124, "data": [ { "id": 123, "base": 1, "name": "Тестовый проект", "batches": 1, "batches_total": 10, "created_at": "01.07.2024 12:31:07", "updated_at": "01.07.2024 12:31:07", "swsk_sum": 10, "ws_sum": 6284622, "words_count": 10 } ] } ``` #### Error Responses - **401** - Unauthorized. - **429** - Too Many Requests. Rate limit exceeded. Check `Retry-After` header. - **500** - Internal Server Error. ``` -------------------------------- ### Create Monitoring Project Source: https://apidoc.keys.so/ Creates a new position monitoring project. ```APIDOC ## POST /monitoring ### Description Creates a new position monitoring project. ### Method POST ### Endpoint https://api.keys.so/monitoring ### Authorization _X-Keyso-TOKEN_ _auth-token_ ### Responses #### Error Responses - **400**: Bad Request - Missing required parameter or incorrect type. - **401**: Unauthorized - Authentication failed. - **404**: Not Found - Resource, domain, phrase, or channel not found. - **500**: Internal Server Error - An error occurred on the server. ``` -------------------------------- ### Create Serp Parsing Task Source: https://apidoc.keys.so/ Initiates a new serp parsing task with specified project details. ```APIDOC ## POST /serp ### Description Creates a new serp parsing task. ### Method POST ### Endpoint https://api.keys.so/serp ### Authorization X-Keyso-TOKEN auth-token ### Request Body Schema application/json ```json { "data": { "name": "string", "regionId": "integer", "topNumber": "integer", "searchEngine": "integer", "words": [ "string" ] } } ``` ### Request Example ```json { "data": { "name": "Имя проекта", "regionId": 38, "topNumber": 10, "searchEngine": 0, "words": [ "фраза1", "фраза2", "фраза3" ] } } ``` ### Responses #### Success Response (200) Returns an empty array upon successful creation. #### Error Responses - **400**: Bad Request - Missing required parameter or type mismatch. - **401**: Unauthorized - Authentication failed. - **429**: Too Many Requests - Rate limit exceeded. Check `Retry-After` header. - **500**: Internal Server Error - Server encountered an error. ``` -------------------------------- ### Get Dictionary by Pages Source: https://apidoc.keys.so/ Retrieves a dictionary of words organized by pages for a given UID. ```APIDOC ## GET /tools/dictionary-by-pages/ ### Description Retrieves a dictionary of words organized by pages for a given UID. ### Method GET ### Endpoint https://api.keys.so/tools/dictionary-by-pages/ ### Parameters #### Path Parameters - **uid** (string) - Required - The unique identifier for the dictionary. ### Response #### Success Response (200) - **more** (boolean) - Indicates if there is more data available. - **uid** (string) - The unique identifier of the dictionary. - **state** (integer) - The state of the dictionary. - **pages** (array of strings) - A list of pages associated with the dictionary. - **result** (array of objects) - Contains word data, including keys and words with their counts and details. ### Response Example ```json { "more": true, "uid": "659cc524aba41a0252e0a27535f8a064", "state": 10, "pages": [ "keys.so", "text.ru/" ], "result": [ { "keys": [ { "superwsk": 2, "wsk": 2, "ws": 2, "word": "фраза" } ], "words": [ { "count": 26, "keys": [ "фраза", "фраза2" ], "open": 0, "sumSuperwsk": 26, "sumWs": 26, "sumWsk": 26, "words": [ "фраза", "фраза2" ] } ] } ] } ``` ```