From cb6f15ae1228e8a698f2014dcb8cb13875be633e Mon Sep 17 00:00:00 2001 From: rmilyushkevich <24544571+rmilyushkevich@users.noreply.github.com> Date: Tue, 28 Jul 2026 07:53:10 +0000 Subject: [PATCH] chore(gen): refresh HasData API schema --- pr-body.md | 8 +- src/endpoints.generated.ts | 265 +++++++++++++++++++++++++++++++++++-- 2 files changed, 258 insertions(+), 15 deletions(-) diff --git a/pr-body.md b/pr-body.md index 4cb69b4..699eba3 100644 --- a/pr-body.md +++ b/pr-body.md @@ -1,11 +1,11 @@ ## Changes - src/endpoints.generated.ts | 1022 +++++++++++++++++++++++++++++++++++++++++--- - 1 file changed, 959 insertions(+), 63 deletions(-) + src/endpoints.generated.ts | 265 +++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 254 insertions(+), 11 deletions(-) ## Endpoint delta ### Added -- google-hotels -- google-maps-posts +- duckduckgo +- instagram-posts diff --git a/src/endpoints.generated.ts b/src/endpoints.generated.ts index 7ebdd26..8e0cc5a 100644 --- a/src/endpoints.generated.ts +++ b/src/endpoints.generated.ts @@ -972,9 +972,9 @@ export const ENDPOINTS = { }, "location": { "type": "string", - "description": "Defines the search’s origin location. For realistic results, set location at the city level. If omitted, the proxy’s location may be used.", + "description": "Defines the search’s origin location as free text (e.g. `Austin, Texas`). It is resolved to coordinates to localize the results. For realistic results, set location at the city level. If both `lat` and `lon` are provided, they take precedence and `location` is ignored. If omitted, the proxy’s location may be used.", "wireName": "location", - "default": "Austin,Texas,United States" + "default": "Austin, Texas, United States" }, "lat": { "type": "string", @@ -1074,10 +1074,56 @@ export const ENDPOINTS = { "us" ] }, - "safe": { + "setLang": { + "type": "string", + "description": "The language of the user interface and preferred result language. Accepts a two-letter language code (e.g. `en`, `de`) or a locale/script variant (e.g. `en-gb`, `zh-hans`, `pt-br`).", + "wireName": "setLang", + "enum": [ + "ar", + "bg", + "ca", + "zh-hans", + "zh-hant", + "hr", + "cs", + "da", + "nl", + "en", + "en-gb", + "et", + "fi", + "fr", + "de", + "he", + "hi", + "hu", + "it", + "jp", + "ko", + "lv", + "lt", + "ms", + "nb", + "pl", + "pt-br", + "pt-pt", + "ro", + "ru", + "sr", + "sk", + "sl", + "es", + "sv", + "th", + "tr", + "uk", + "vi" + ] + }, + "safeSearch": { "type": "string", "description": "Adult Content Filtering option.", - "wireName": "safe", + "wireName": "safeSearch", "enum": [ "off", "moderate", @@ -1104,11 +1150,6 @@ export const ENDPOINTS = { "type": "integer", "description": "This parameter specifies the number of search results to skip and is used for implementing pagination. For example, a value of 1 (default) indicates the first page of results, 11 refers to the second page, and 21 to the third page.", "wireName": "first" - }, - "count": { - "type": "integer", - "description": "Number of results per page, ranging from 1 to 50.", - "wireName": "count" } } }, @@ -1711,6 +1752,177 @@ export const ENDPOINTS = { } } }, + "duckduckgo": { + "slug": "duckduckgo", + "title": "DuckDuckGo SERP API", + "description": "The DuckDuckGo SERP API provides real-time access to structured DuckDuckGo search results.", + "category": "DuckDuckGo", + "method": "GET", + "path": "/scrape/duckduckgo/serp", + "cost": 10, + "required": [], + "properties": { + "q": { + "type": "string", + "description": "Specify the search term for which you want to scrape the SERP. Required unless `nextPageToken` is provided (which carries the query of the page it continues).", + "wireName": "q", + "default": "Coffee" + }, + "kl": { + "type": "string", + "description": "DuckDuckGo region code in `-` form (e.g. `us-en`, `de-de`). Sets country and interface language at once; takes precedence over `cc`/`setLang`. Use `wt-wt` for no region.", + "wireName": "kl", + "enum": [ + "ar-es", + "au-en", + "at-de", + "be-nl", + "be-fr", + "br-pt", + "ca-en", + "ca-fr", + "cl-es", + "dk-da", + "fi-fi", + "fr-fr", + "de-de", + "hk-tzh", + "in-en", + "id-en", + "it-it", + "jp-jp", + "kr-kr", + "my-en", + "mx-es", + "nl-nl", + "nz-en", + "no-no", + "cn-zh", + "pl-pl", + "ph-en", + "ru-ru", + "za-en", + "es-es", + "se-sv", + "ch-de", + "tw-tzh", + "tr-tr", + "uk-en", + "us-en", + "wt-wt" + ] + }, + "cc": { + "type": "string", + "description": "The two-letter country code for the country to search from. Combined with `setLang` to form the DuckDuckGo region. Ignored if `kl` is set.", + "wireName": "cc", + "enum": [ + "ar", + "au", + "at", + "be", + "br", + "ca", + "cl", + "dk", + "fi", + "fr", + "de", + "hk", + "in", + "id", + "it", + "jp", + "kr", + "my", + "mx", + "nl", + "nz", + "no", + "cn", + "pl", + "pt", + "ph", + "ru", + "sa", + "za", + "es", + "se", + "ch", + "tw", + "tr", + "gb", + "us" + ] + }, + "setLang": { + "type": "string", + "description": "The preferred result/interface language code — usually two letters (e.g. `en`, `de`), with script-tag variants for some languages (e.g. `zh-hans`, `zh-hant`). Combined with `cc` to form the DuckDuckGo region. Ignored if `kl` is set.", + "wireName": "setLang", + "enum": [ + "ar", + "ca", + "zh-hans", + "zh-hant", + "hr", + "cs", + "da", + "nl", + "en", + "et", + "fi", + "fr", + "de", + "he", + "hu", + "it", + "ja", + "ko", + "lv", + "lt", + "nb", + "pl", + "pt", + "ro", + "ru", + "sk", + "sl", + "es", + "sv", + "th", + "tr", + "uk", + "vi" + ] + }, + "safeSearch": { + "type": "string", + "description": "Adult Content Filtering option.", + "wireName": "safeSearch", + "enum": [ + "off", + "moderate", + "strict" + ] + }, + "deviceType": { + "type": "string", + "description": "Specify the device type for the search.", + "wireName": "deviceType", + "default": "desktop", + "enum": [ + "desktop", + "mobile", + "tablet" + ] + }, + "nextPageToken": { + "type": "string", + "description": "Opaque token returned in each response as `nextPageToken`. Pass it back (in place of `q`) to fetch the next page of results. It carries a pre-signed page URL bound to the original request's session, so it must be used as-is and cannot be constructed manually. Absent when there are no further pages.", + "wireName": "nextPageToken" + } + } + }, "glassdoor-job": { "slug": "glassdoor-job", "title": "Glassdoor Job Scraper API", @@ -5007,7 +5219,7 @@ export const ENDPOINTS = { "type": "string", "description": "Token for displaying more product info in the Google immersive pop-up, available in the Google Shopping API response as the `immersiveProductPageToken` property.", "wireName": "pageToken", - "default": "eyJyZHMiOiJQQ18zMjQ1NDc2NDAwODMzNTUxOTQ4fFBST0RfUENfMzI0NTQ3NjQwMDgzMzU1MTk0OCIsInByb2R1Y3RpZCI6IjEyNTE4MTc2MDIxNjEyNzgxNzUyIiwiY2F0YWxvZ2lkIjoiMTY5MTQ4Nzc2MjUyODA5Nzc4NjUiLCJoZWFkbGluZU9mZmVyRG9jaWQiOiIxNzc2Njg4MTE3MjA4NzEzODU1NSIsImltYWdlRG9jaWQiOiIzNTQ4NDgyNzk5NTQyMzA0NzkxIiwiZ3BjaWQiOiIzMjQ1NDc2NDAwODMzNTUxOTQ4IiwibWlkIjoiNTc2NDYyNjEyMjgwMTMwNDgxIiwicSI6ImNvZmZlZSIsImhsIjoiZW4iLCJnbCI6InVzIiwiY29va2llcyI6Il9fU2VjdXJlLVNUUlA9QUVFUDdnTDhveTExMkFEcGdEZkdDVmtjdXVRMHNmal8ySlhHaktsbHVQVjhxTHBLVTg3UlN6RmJKd0FvYkNjWjVQUU8tYmJZdGRGd1JDYnBHWmFmVzdnc0ZaYjlQM3VPaF9kSTsgQUVDPUFhSm1hNXVoaGE4ZTdjUnF6cThoZG1Na3ExSmk2MGE4MU1kRkQ1Z2M0Szd4WjZaRnQ0S05RYVJLVkpJOyBOSUQ9NTMxPWcySHJDN296elVZUnVraDhFT1NzakN3QWw0cEFWN25mYkNvcVlnWEVmdVNEUWxWLW80WVZZamxvOTh3cW5taHoxWWQ4NF9jUkFhWlZBV1A4dTVkUzNOVHhKVG9ZcjlNbkI1S3h0R0NESWR4azAya2tGajhGbkdfalAzNGQwM0haR1RjNkV4SWpldlBGREQ5X2xCM1VpNmRabmhoLVlveXN6SUxLVTkwT1MxekZBdHJnNFU1NUE4YWVlVFdlQW5ieEgzSGUxTHRSSFY0UVc4Y2d3Vzc0dW45bTZpdThaaldDZVp0QUhoS0ZsbDdycTJGbG1ybDRRdTV6UGxzIiwieHNyZiI6IkFLUE9yMVM2YmtDejdIcEM0WVo0U2VmNzY4RWE0YnhLbGc6MTc3OTI2ODI0NjMxNCIsIm9hcHZmYyI6IkVvd0RDc3dDUVUxdU15MTVWR1JQTjNrNWJEWndTa1JQT0RWemVpMXJaSFF6YUU1SlVteGlSRE00Wm1WRWVVTXRjakZHYVcxM1lpMW9TRVU1T0ZJeU5UbGhTRXBvTlZKNVdrUTBjMHBKWHkxM1ZEVXhOVlowV25OdFMydFlYMUYzTlZKUmQycFNkREJtYlhWV01IcEdWSG95YVVsWWMzcGpWWGhDU0hJd2ExQmZPRW80YmpWdmNsVmFVR056UWsxMVNEUllkSGc1ZWxKSU9WbzBTMnhSZVhKTlRqZG9UMFIzUmpkT00wSjNWMUYwTmpsUFQxVkplRUZZVERKeFh6ZzBNVU4zTUZseGFqWmhkakp2VEZKSWQzbGZUVUU0WjBoUWRHMHpUMVZvU0cxRVJFbDZTMmhYTFRoa1JsRnRha1ZhVmt0d1pXZE1hMUpYT1ZrdExYbDZjMHhIZFhCSlR6VXhXa1JZTWxoU2VFaE5SRlphYVZOVE9YWklSMUpxU25WSVVsOU9RV1JOU1dSNVZYYzRiMHc1YVVkVFNsUjZSVGgwTjFaNVdHVlJiR1Y1VUZaTFpETjJhR3h2Y0djdGNUSkRhbGNTRjJ4WWIwNWhkbGd4VFUxVGVuRjBjMUJ3VFU5Mk5sRm5HaUpCU2t0TVJtMUtXV1pGU21GaGQzUktSakEwVEdOclYwTmlia281VkhwdWF6Rm4ifQ" + "default": "eyJyZHMiOiJQQ18zMjQ1NDc2NDAwODMzNTUxOTQ4fFBST0RfUENfMzI0NTQ3NjQwMDgzMzU1MTk0OCIsInByb2R1Y3RpZCI6IjE2NTYxODg2MzMwNjI5NzA1MjY5IiwiY2F0YWxvZ2lkIjoiMTA5MDU3MjEzODE1NDM1NDgwMCIsImhlYWRsaW5lT2ZmZXJEb2NpZCI6IjEwNTQwMDUxMzg0NjEzOTczOTg1IiwiaW1hZ2VEb2NpZCI6IjE3MjMwMzM3NDkwMTYzODIyNjMiLCJncGNpZCI6IjgyOTk1MTI3NTExOTg2NzE2MjIiLCJtaWQiOiI1NzY0NjI2MTIyODAxMzA0ODEiLCJxIjoiYnV5IGNvZmZlZSIsImhsIjoiZW4iLCJnbCI6InVzIiwiY29va2llcyI6Il9fU2VjdXJlLVNUUlA9QU5tWndhMHZsZUx5TFN3SDZKcmFHRU15RGxnbEhJN3NJelN2NFVJcXhZUDhFQk5kd1FXNTRoRHVsX3RZRl9hSFBsQjM3ajhNMWZRY1NwOVhTMy1icmVOdzIwa1RybjhnajhCaDsgQUVDPUFkSlZFYXR5TE1ZbHktUk5IRGxTVm04MGkySWRhWm4yeE5mWlVBX3JzV3pDX0xyTFFTeUwzTGJ3TkJnOyBOSUQ9NTMyPWtadG5CQnpoNE02cU5lTW9VM1Rjekd1d0VKdmtkcjBZMzFFbmNPTlZUT084TmlVX0oyUTVucmR3Q0dWUU5pWVlvWUROSEdWTE9BdUd0SWI2ZjEwSDk3OHM3bk9hajFFTVN1ellIaDVTMzdDTkJDZkdwLWlmcThVenV4aHR3TTR0YmNidXdnbVBNUHJHeXBlMS1aQmZtTEVCOXpTam9aMFpGOUZHQ3ZQdkc3aGdXZzRCcndvb1RYclhnTHdhc3BtYXpUVi1YYUg1bzJjV2lUNTUwc0dHNG5pRVpYLUI1aFZsbllYQ1QxZU91LXU0Tjk4MXQtUnYzYi1RZS1nTGV2NmV4ZGNFdlE7IERWPU02U2J0ZDljdGtvc1VKSEhKMHhOMXZfa3lxX0M5Tm42MHAxSjhPd3dCd1FBQUFBIiwieHNyZiI6IkFGNXRTTzRGb3VnZDItOVJPN09YU29oMzlvWnhLUzZGNVE6MTc4MzY4OTMxMzM5MiIsIm9hcHZmYyI6IkVvc0RDc3dDUVVwcFZEUjBTMGMwTmxObk16TktTRmxmYW05SlpUbFNNM1ZaVTFJeWJ6ZENlRGgwWm5kRVNGWTFja2hzZFVZNVMzWnVOMVUxYkVSSU1YTlVSMUpyV1VwWFpVWlNUVVY0Y2s5ak1EaElYMWd3UVRaR1RVbzJTVmxpZVdGdU5IRklVV1o0WTJ4d1RVUm1hRFZPT1dSbGFXOVZaVFpNT1ZaT1VXZHJNMlJTTlZNMlQzWlhiSEI1UW01aU5DMHlUR0psYnpWTVJEVkhSazVoYlZkZlVFUmxlbkIwTlc1U2FtRjJOVUprVWkxTloxcFJhbHBsY21kc1VXbDNXVWcxY1dKeFdtTjZWR0ZEVDB0a2RISldTekYwYzB0MVlqaHBiR1o2TFc1cFZsODNjV296VTI5RVgydDVkSE13WlVNNVJVaGhhRTU0WHpKT2ExY3plR3BXY1VGMlJXVjBhVmN5T1ZkNk9WaEVialV5VldVNGNtdHlPVUV4Ym1ZdFNYRjRkM1J3VUMxdFNYUjZORUk0Y3pCV1REUlhkbTVHUldodE1ETnVaaTFNTFZSUlRuUm9PVmRDWDNoaVoyNXVkVWtTRmxsUVFsRmhjV1ZrVFZCWGRIRjBjMUEwV1U5elRWRWFJa0ZFYzNJNVpsRjZSMVpNTkZKR2IwRmhZbmhQWmpSRFRqbHBNRTVCWjAxcFowRSIsInZlcnNpb24iOjJ9" }, "moreStores": { "type": "boolean", @@ -7093,7 +7305,7 @@ export const ENDPOINTS = { "description": "Parameter used for sorting and refining results.", "wireName": "sortBy", "enum": [ - "qualityScore", + "mostRelevant", "newestFirst", "ratingHigh", "ratingLow" @@ -15387,6 +15599,37 @@ export const ENDPOINTS = { } } }, + "instagram-posts": { + "slug": "instagram-posts", + "title": "Instagram Posts Scraper API", + "description": "The Instagram Posts Scraper API lets you retrieve the latest posts of a public Instagram account using its handle. It returns posts with captions, hashtags, mentions, likes, comments, and plays counts, image and video URLs, and timestamps, with token-based pagination for retrieving older posts.", + "category": "Instagram", + "method": "GET", + "path": "/scrape/instagram/posts", + "cost": 5, + "required": [ + "handle" + ], + "properties": { + "handle": { + "type": "string", + "description": "The Instagram username of the account whose posts you want to scrape, without the `@` symbol.", + "wireName": "handle", + "default": "hasdatadotcom" + }, + "limit": { + "type": "integer", + "description": "The maximum number of posts to retrieve per request. Defaults to 12.", + "wireName": "limit", + "default": 12 + }, + "nextPageToken": { + "type": "string", + "description": "Defines the next page token. It is used for retrieving the next page results. Use the `nextPageToken` value returned by the previous response.", + "wireName": "nextPageToken" + } + } + }, "instagram-profile": { "slug": "instagram-profile", "title": "Instagram Profile Scraper API",