serpkite 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -156,7 +156,24 @@ interface paths {
156
156
  };
157
157
  get?: never;
158
158
  put?: never;
159
- /** Google Maps search (places with coordinates). Accepts `ll` ("@lat,lng,zoomz") to search around a point */
159
+ /**
160
+ * Google Maps search (places with coordinates). Accepts `ll` ("@lat,lng,zoomz") to search around a point
161
+ * @description Google Maps search results: name, full address, coordinates, categories, rating, website,
162
+ * phone, opening hours and the place's identifiers (`place_id`, `cid`, `fid`) for
163
+ * `/v1/place` and `/v1/reviews`. Categories, addresses and hours are in `language`.
164
+ *
165
+ * **Where:** `ll` ("@lat,lng,zoomz") searches the map at that point and zoom; `location`
166
+ * (or `uule`) searches the named place. Without either, Google picks the area from the
167
+ * query (an exact name or address) or from where the request comes from, so local queries
168
+ * such as "coffee" need `location` or `ll`.
169
+ *
170
+ * **Yandex Maps:** with `engine=yandex` (where the deployment enables it) the results come
171
+ * from Yandex Maps, which covers Russia and the CIS in depth. They have the same fields,
172
+ * with the Yandex organisation id in `oid` (for `/v1/place`) and `yandex_maps_url` instead
173
+ * of Google's identifiers; categories, addresses and hours follow `language` (`ru` for
174
+ * Russian). Pass `ll` or a `location` (a city, appended to the query); `uule` and `tbs`
175
+ * are refused.
176
+ */
160
177
  post: operations["maps"];
161
178
  delete?: never;
162
179
  options?: never;
@@ -173,7 +190,10 @@ interface paths {
173
190
  };
174
191
  get?: never;
175
192
  put?: never;
176
- /** Google local results (places) */
193
+ /**
194
+ * Google local results (places)
195
+ * @description Same results as `/v1/maps` (Google Maps search), with the same fields and location rules.
196
+ */
177
197
  post: operations["places"];
178
198
  delete?: never;
179
199
  options?: never;
@@ -181,6 +201,34 @@ interface paths {
181
201
  patch?: never;
182
202
  trace?: never;
183
203
  };
204
+ "/v1/place": {
205
+ parameters: {
206
+ query?: never;
207
+ header?: never;
208
+ path?: never;
209
+ cookie?: never;
210
+ };
211
+ get?: never;
212
+ put?: never;
213
+ /**
214
+ * Details of one place (by `place_id`, `cid`, `fid` or Yandex `oid`); 1 credit
215
+ * @description The full Google Maps listing of one place: address, country, coordinates, time zone,
216
+ * categories, opening hours (as text and as structured `weekly_hours`), website, phone,
217
+ * rating, description and photos, in `language`. `results` holds the place, or is empty
218
+ * (not charged) when no place has that identifier.
219
+ *
220
+ * With `oid` (a Yandex Maps organisation id, e.g. from an `engine=yandex` maps result or
221
+ * `yandex.ru/maps/org/<name>/<oid>/`) the listing comes from Yandex Maps, where the
222
+ * deployment enables it: `oid` implies `engine=yandex` and can't be combined with Google's
223
+ * identifiers. Closed listings (temporarily or permanently) carry no hours.
224
+ */
225
+ post: operations["place"];
226
+ delete?: never;
227
+ options?: never;
228
+ head?: never;
229
+ patch?: never;
230
+ trace?: never;
231
+ };
184
232
  "/v1/reviews": {
185
233
  parameters: {
186
234
  query?: never;
@@ -639,7 +687,15 @@ interface paths {
639
687
  };
640
688
  get?: never;
641
689
  put?: never;
642
- /** Remote MCP server (streamable HTTP, JSON-RPC 2.0). Tools search, news, maps, scholar, webpage */
690
+ /**
691
+ * Remote MCP server (streamable HTTP, JSON-RPC 2.0). Tools search, news, maps, place, scholar, webpage
692
+ * @description Authenticates with an API key (`Authorization: Bearer skt_live_…`) or an
693
+ * OAuth 2.1 access token (`skt_oat_…`) issued by app-api.serpkite.com for
694
+ * this resource (MCP authorization spec). Without a valid credential the
695
+ * 401 carries `WWW-Authenticate: Bearer resource_metadata="…/.well-known/oauth-protected-resource/v1/mcp", scope="mcp"`
696
+ * (plus `error="invalid_token"` when a credential was rejected). OAuth
697
+ * access tokens are only accepted here, not on the REST endpoints.
698
+ */
643
699
  post: operations["mcp"];
644
700
  delete?: never;
645
701
  options?: never;
@@ -647,6 +703,40 @@ interface paths {
647
703
  patch?: never;
648
704
  trace?: never;
649
705
  };
706
+ "/.well-known/oauth-protected-resource/v1/mcp": {
707
+ parameters: {
708
+ query?: never;
709
+ header?: never;
710
+ path?: never;
711
+ cookie?: never;
712
+ };
713
+ /** OAuth protected resource metadata for the MCP server (RFC 9728) */
714
+ get: operations["mcpProtectedResourceMetadata"];
715
+ put?: never;
716
+ post?: never;
717
+ delete?: never;
718
+ options?: never;
719
+ head?: never;
720
+ patch?: never;
721
+ trace?: never;
722
+ };
723
+ "/.well-known/oauth-protected-resource": {
724
+ parameters: {
725
+ query?: never;
726
+ header?: never;
727
+ path?: never;
728
+ cookie?: never;
729
+ };
730
+ /** OAuth protected resource metadata (root form; same document) */
731
+ get: operations["protectedResourceMetadata"];
732
+ put?: never;
733
+ post?: never;
734
+ delete?: never;
735
+ options?: never;
736
+ head?: never;
737
+ patch?: never;
738
+ trace?: never;
739
+ };
650
740
  }
651
741
  interface components {
652
742
  schemas: {
@@ -675,6 +765,25 @@ interface components {
675
765
  request_id?: string;
676
766
  };
677
767
  };
768
+ /** @description RFC 9728 protected resource metadata */
769
+ ProtectedResourceMetadata: {
770
+ /**
771
+ * Format: uri
772
+ * @example https://api.serpkite.com/v1/mcp
773
+ */
774
+ resource: string;
775
+ /**
776
+ * @example [
777
+ * "https://app-api.serpkite.com"
778
+ * ]
779
+ */
780
+ authorization_servers: string[];
781
+ scopes_supported?: string[];
782
+ bearer_methods_supported?: string[];
783
+ resource_name?: string;
784
+ /** Format: uri */
785
+ resource_documentation?: string;
786
+ };
678
787
  SearchRequest: {
679
788
  q: string;
680
789
  /**
@@ -691,7 +800,7 @@ interface components {
691
800
  location?: string;
692
801
  /** @description Pre-encoded Google location (overrides ll and location; percent-encoded values are decoded) */
693
802
  uule?: string;
694
- /** @description Map point "@lat,lng,14z" (maps and places only; zoom optional): the search runs as a searcher at that point. Overrides location */
803
+ /** @description Map point "@lat,lng,14z" (maps and places only; zoom optional, default 14z): the map is searched around that point at that zoom, wherever the request comes from. Overrides location */
695
804
  ll?: string;
696
805
  /**
697
806
  * @description 10, or up to 100 for the depth bundle on search and news (7 credits for 100; values between round up to whole pages). Other verticals return one page of 10
@@ -779,14 +888,15 @@ interface components {
779
888
  country?: string;
780
889
  language?: string;
781
890
  /**
891
+ * @description Only `most_relevant` is served: Google Maps shows other review orders only to signed-in visitors, so `newest`, `highest_rating` and `lowest_rating` return 400 (not charged).
782
892
  * @default most_relevant
783
893
  * @enum {string}
784
894
  */
785
895
  sort?: "most_relevant" | "newest" | "highest_rating" | "lowest_rating";
786
- /** @description `next_page_token` from the previous page, unchanged. Opaque and bound to the place and `sort` it was issued for (anything else is a 400). Paging reaches the first 100 reviews of a place per sort order. */
896
+ /** @description `next_page_token` from the previous page, unchanged. Opaque and bound to the place and `sort` it was issued for (anything else is a 400). Paging reaches the first 10 reviews of a place, all Google Maps shows a logged-out visitor. */
787
897
  page_token?: string;
788
898
  /**
789
- * @description Reviews per page (a page can be shorter when Google stops loading early; `next_page_token` then resumes after it)
899
+ * @description Reviews per page; a page holds at most 10 (the first 10 reviews of a place). A page can be shorter when Google stops loading early; `next_page_token` then resumes after it
790
900
  * @default 10
791
901
  */
792
902
  num?: number;
@@ -795,6 +905,39 @@ interface components {
795
905
  fields?: string;
796
906
  max_age?: number;
797
907
  };
908
+ /** @description One of place_id, cid or fid (Google; place_id wins, then fid, then cid) or oid (Yandex Maps) is required */
909
+ PlaceRequest: {
910
+ /** @description Google place id ("ChIJ…"), e.g. `place_id` of a /v1/maps result */
911
+ place_id?: string;
912
+ /** @description Decimal customer id (`cid` of a result) */
913
+ cid?: string;
914
+ /** @description Feature id "0x…:0x…" (`fid` of a result) */
915
+ fid?: string;
916
+ /**
917
+ * @description Yandex Maps organisation id (`oid` of an `engine=yandex` maps result). Implies `engine=yandex`; not with place_id, cid or fid
918
+ * @example 1045821788
919
+ */
920
+ oid?: string;
921
+ /**
922
+ * @description Country code (ISO 3166-1 alpha-2); Google's regional view of the listing
923
+ * @default us
924
+ */
925
+ country?: string;
926
+ /**
927
+ * @description Language of the address, categories, hours and description (e.g. en, ru, de)
928
+ * @default en
929
+ */
930
+ language?: string;
931
+ /**
932
+ * @default json
933
+ * @enum {string}
934
+ */
935
+ format?: "json" | "markdown" | "compact";
936
+ fields?: string;
937
+ /** @description Accept a cached result up to this many seconds old (50% of credits on a hit) */
938
+ max_age?: number;
939
+ engine?: components["schemas"]["EngineParam"];
940
+ };
798
941
  WebpageRequest: {
799
942
  /**
800
943
  * Format: uri
@@ -1131,8 +1274,8 @@ interface components {
1131
1274
  * @description A search provider (docs/providers). Which verticals each serves depends on the deployment.
1132
1275
  * @enum {string}
1133
1276
  */
1134
- Provider: "google" | "brave" | "bing" | "yahoo" | "duckduckgo" | "mojeek" | "wikipedia";
1135
- /** @description Which search providers may answer. `google` (the default) is Google only; within Google, SerpKite always fails over across its own proxy pools. `auto` allows falling back to other enabled providers, in route order, when Google is blocked or times out. A single other provider (`brave`) or a list (`["google","brave"]`, or `google,brave` in a query string) restricts the request to those providers. `meta.engine` always names the provider that answered and credits follow that provider's price. A key with "Allow fallback to other search engines" on treats a request without `engine` as `auto`. `consensus` (`/v1/search` only; 400 elsewhere, and it can't be combined with other names) queries several independent search indexes in parallel (at most one Bing-backed provider, so Yahoo or DuckDuckGo never count as agreeing with Bing), merges the results by URL and ranks them by how many providers returned each one. Each result lists its `sources`; `meta.engine` is `consensus` and `meta.route` lists every provider attempt. It stops once `num` unique results are in hand or after a few seconds, and costs the sum of one page at each provider that returned results (providers that failed, came back empty or were never started are free). */
1277
+ Provider: "google" | "brave" | "bing" | "yahoo" | "duckduckgo" | "mojeek" | "wikipedia" | "yandex";
1278
+ /** @description Which search providers may answer. `google` (the default) is Google only; within Google, SerpKite always fails over across its own proxy pools. `auto` allows falling back to other enabled providers, in route order, when Google is blocked or times out. A single other provider (`brave`) or a list (`["google","brave"]`, or `google,brave` in a query string) restricts the request to those providers. `meta.engine` always names the provider that answered and credits follow that provider's price. A key with "Allow fallback to other search engines" on treats a request without `engine` as `auto`. `consensus` (`/v1/search` only; 400 elsewhere, and it can't be combined with other names) queries several independent search indexes in parallel (at most one Bing-backed provider, so Yahoo or DuckDuckGo never count as agreeing with Bing), merges the results by URL and ranks them by how many providers returned each one. Each result lists its `sources`; `meta.engine` is `consensus` and `meta.route` lists every provider attempt. It stops once `num` unique results are in hand or after a few seconds, and costs the sum of one page at each provider that returned results (providers that failed, came back empty or were never started are free). `yandex` serves `/v1/maps`, `/v1/places` and `/v1/place` from Yandex Maps where the deployment enables it (otherwise a 503 `unavailable`, not charged); with `auto` it is the last fallback there. */
1136
1279
  EngineParam: string | components["schemas"]["Provider"][];
1137
1280
  /** @description One provider attempt behind this answer. Proxy pools are internal and never listed. */
1138
1281
  RouteStep: {
@@ -1195,6 +1338,7 @@ interface components {
1195
1338
  place_id?: string;
1196
1339
  cid?: string;
1197
1340
  fid?: string;
1341
+ oid?: string;
1198
1342
  sort?: string;
1199
1343
  include_content?: number;
1200
1344
  format?: string;
@@ -1351,13 +1495,67 @@ interface components {
1351
1495
  types?: string[];
1352
1496
  website?: string;
1353
1497
  phone_number?: string;
1498
+ /** @example +44 20 7232 3010 */
1499
+ international_phone_number?: string;
1500
+ /** @description Hours as the provider displays them, keyed by English weekday (Monday … Sunday), in `language`, e.g. {"Monday": "7:30 am–6 pm", "Sunday": "Closed"}; Yandex Maps: 24-hour times ("08:00–22:00"), "Closed"/"выходной", "Open 24 hours"/"круглосуточно" */
1354
1501
  opening_hours?: {
1355
1502
  [key: string]: string;
1356
1503
  };
1504
+ weekly_hours?: components["schemas"]["WeeklyHours"];
1505
+ /** @description ISO 3166-1 alpha-2 country code of the place, upper case (RU, GB) */
1506
+ country?: string;
1507
+ /** @description IANA time zone of the place (Europe/Moscow) */
1508
+ timezone?: string;
1509
+ /** @description Google's short description of the place, or the owner's, when Google shows one; Yandex Maps' summary of the place when it has one */
1510
+ description?: string;
1511
+ /** @description Photos of the place (/v1/place; up to 10). The URLs are public and can be fetched server-side without cookies */
1512
+ photos?: components["schemas"]["PlacePhoto"][];
1513
+ /** @description The place on Google Maps */
1514
+ google_maps_url?: string;
1357
1515
  thumbnail_url?: string;
1358
1516
  place_id?: string;
1359
1517
  cid?: string;
1360
1518
  fid?: string;
1519
+ /** @description Yandex Maps organisation id (engine=yandex), for /v1/place */
1520
+ oid?: string;
1521
+ /** @description The place on Yandex Maps (engine=yandex): https://yandex.ru/maps/org/<oid>/ */
1522
+ yandex_maps_url?: string;
1523
+ };
1524
+ /**
1525
+ * @description Opening hours per weekday, from the provider's listing, as local times (`timezone`) in 24-hour HH:MM.
1526
+ * A day that is closed is an empty list; a day open 24 hours is `[{"open": "00:00", "close": "24:00"}]`;
1527
+ * a day with a break has several intervals. `close` is "24:00" at midnight, and an interval that
1528
+ * ends after midnight has `next_day: true` (e.g. 17:30–03:00). Days Google doesn't list are absent;
1529
+ * Yandex Maps lists all seven or none.
1530
+ */
1531
+ WeeklyHours: {
1532
+ monday?: components["schemas"]["HoursIntervals"];
1533
+ tuesday?: components["schemas"]["HoursIntervals"];
1534
+ wednesday?: components["schemas"]["HoursIntervals"];
1535
+ thursday?: components["schemas"]["HoursIntervals"];
1536
+ friday?: components["schemas"]["HoursIntervals"];
1537
+ saturday?: components["schemas"]["HoursIntervals"];
1538
+ sunday?: components["schemas"]["HoursIntervals"];
1539
+ };
1540
+ HoursIntervals: components["schemas"]["HoursInterval"][];
1541
+ HoursInterval: {
1542
+ /** @example 08:00 */
1543
+ open: string;
1544
+ /** @example 22:00 */
1545
+ close: string;
1546
+ /** @description The interval closes after midnight, on the next day */
1547
+ next_day?: boolean;
1548
+ };
1549
+ PlacePhoto: {
1550
+ /** @description Image URL (at most 1600 px on the long side) */
1551
+ url: string;
1552
+ width?: number;
1553
+ height?: number;
1554
+ /**
1555
+ * @description Who uploaded it, when Google says (Google shows no contributor names to logged-out visitors)
1556
+ * @enum {string}
1557
+ */
1558
+ source?: "business" | "visitor";
1361
1559
  };
1362
1560
  PlacesResponse: {
1363
1561
  request: components["schemas"]["RequestEcho"];
@@ -1567,13 +1765,15 @@ interface components {
1567
1765
  requests: number;
1568
1766
  /** @description Share of requests without a 5xx (0-1) */
1569
1767
  success_rate: number;
1768
+ /** @description Median latency of successful (non-error) responses; 0 when none succeeded */
1570
1769
  p50_ms: number;
1770
+ /** @description 95th-percentile latency of successful (non-error) responses; 0 when none succeeded */
1571
1771
  p95_ms: number;
1572
1772
  }[];
1573
1773
  };
1574
1774
  BatchCreateRequest: {
1575
1775
  /** @enum {string} */
1576
- endpoint: "search" | "images" | "videos" | "news" | "maps" | "places" | "reviews" | "shopping" | "scholar" | "patents" | "autocomplete" | "webpage";
1776
+ endpoint: "search" | "images" | "videos" | "news" | "maps" | "places" | "place" | "reviews" | "shopping" | "scholar" | "patents" | "autocomplete" | "webpage";
1577
1777
  /** @description Request bodies for `endpoint` (same fields as the realtime endpoint) */
1578
1778
  requests: {
1579
1779
  [key: string]: unknown;
@@ -2393,6 +2593,28 @@ interface operations {
2393
2593
  503: components["responses"]["Unavailable"];
2394
2594
  };
2395
2595
  };
2596
+ place: {
2597
+ parameters: {
2598
+ query?: never;
2599
+ header?: never;
2600
+ path?: never;
2601
+ cookie?: never;
2602
+ };
2603
+ requestBody: {
2604
+ content: {
2605
+ "application/json": components["schemas"]["PlaceRequest"];
2606
+ };
2607
+ };
2608
+ responses: {
2609
+ 200: components["responses"]["PlacesOK"];
2610
+ 400: components["responses"]["Error"];
2611
+ 401: components["responses"]["Error"];
2612
+ 402: components["responses"]["Error"];
2613
+ 403: components["responses"]["Error"];
2614
+ 429: components["responses"]["Error"];
2615
+ 503: components["responses"]["Unavailable"];
2616
+ };
2617
+ };
2396
2618
  reviews: {
2397
2619
  parameters: {
2398
2620
  query?: never;
@@ -3096,7 +3318,57 @@ interface operations {
3096
3318
  };
3097
3319
  content?: never;
3098
3320
  };
3099
- 401: components["responses"]["Error"];
3321
+ /** @description Missing, invalid, expired or revoked credential */
3322
+ 401: {
3323
+ headers: {
3324
+ /** @description RFC 9728 challenge pointing at the protected resource metadata */
3325
+ "WWW-Authenticate"?: string;
3326
+ [name: string]: unknown;
3327
+ };
3328
+ content: {
3329
+ "application/json": components["schemas"]["Error"];
3330
+ };
3331
+ };
3332
+ };
3333
+ };
3334
+ mcpProtectedResourceMetadata: {
3335
+ parameters: {
3336
+ query?: never;
3337
+ header?: never;
3338
+ path?: never;
3339
+ cookie?: never;
3340
+ };
3341
+ requestBody?: never;
3342
+ responses: {
3343
+ /** @description Metadata */
3344
+ 200: {
3345
+ headers: {
3346
+ [name: string]: unknown;
3347
+ };
3348
+ content: {
3349
+ "application/json": components["schemas"]["ProtectedResourceMetadata"];
3350
+ };
3351
+ };
3352
+ };
3353
+ };
3354
+ protectedResourceMetadata: {
3355
+ parameters: {
3356
+ query?: never;
3357
+ header?: never;
3358
+ path?: never;
3359
+ cookie?: never;
3360
+ };
3361
+ requestBody?: never;
3362
+ responses: {
3363
+ /** @description Metadata */
3364
+ 200: {
3365
+ headers: {
3366
+ [name: string]: unknown;
3367
+ };
3368
+ content: {
3369
+ "application/json": components["schemas"]["ProtectedResourceMetadata"];
3370
+ };
3371
+ };
3100
3372
  };
3101
3373
  };
3102
3374
  crawlCompletedWebhook: {
@@ -3171,6 +3443,14 @@ type SearchParams = Omit<Schemas["SearchRequest"], "engine"> & {
3171
3443
  engine?: Engine;
3172
3444
  };
3173
3445
  type ReviewsParams = Schemas["ReviewsRequest"];
3446
+ /**
3447
+ * Parameters of `place`: one of `place_id`, `cid` or `fid` (Google; place_id wins, then fid,
3448
+ * then cid), or `oid` (a Yandex Maps organisation id, which implies `engine: "yandex"`).
3449
+ */
3450
+ type PlaceParams = Omit<Schemas["PlaceRequest"], "engine"> & {
3451
+ /** Search providers allowed to answer. Default `"google"`. See {@link Engine}. */
3452
+ engine?: Engine;
3453
+ };
3174
3454
  type WebpageParams = Schemas["WebpageRequest"];
3175
3455
  type RankParams = Schemas["RankRequest"];
3176
3456
  type MapParams = Schemas["MapRequest"];
@@ -3190,6 +3470,16 @@ type ImageResult = Schemas["ImageResult"];
3190
3470
  type VideoResult = Schemas["VideoResult"];
3191
3471
  type NewsResult = Schemas["NewsResult"];
3192
3472
  type PlaceResult = Schemas["PlaceResult"];
3473
+ /**
3474
+ * Opening hours per weekday (`monday` … `sunday`) as local 24-hour `HH:MM` intervals: a closed
3475
+ * day is `[]`, a day open 24 hours `[{ open: "00:00", close: "24:00" }]`. Days Google doesn't
3476
+ * list are absent.
3477
+ */
3478
+ type WeeklyHours = Schemas["WeeklyHours"];
3479
+ /** One opening interval; `next_day` when it closes after midnight. */
3480
+ type HoursInterval = Schemas["HoursInterval"];
3481
+ /** A photo of a place (`place`; up to 10). */
3482
+ type PlacePhoto = Schemas["PlacePhoto"];
3193
3483
  type ReviewResult = Schemas["ReviewResult"];
3194
3484
  type ShoppingResult = Schemas["ShoppingResult"];
3195
3485
  type ScholarResult = Schemas["ScholarResult"];
@@ -3210,7 +3500,7 @@ type SearchResponse = Schemas["SearchResponse"];
3210
3500
  type ImagesResponse = Schemas["ImagesResponse"];
3211
3501
  type VideosResponse = Schemas["VideosResponse"];
3212
3502
  type NewsResponse = Schemas["NewsResponse"];
3213
- /** Returned by both `maps` and `places`. */
3503
+ /** Returned by `maps`, `places` and `place`. */
3214
3504
  type PlacesResponse = Schemas["PlacesResponse"];
3215
3505
  type MapsResponse = PlacesResponse;
3216
3506
  type ReviewsResponse = Schemas["ReviewsResponse"];
@@ -3253,6 +3543,7 @@ type BatchRequestMap = {
3253
3543
  news: SearchParams;
3254
3544
  maps: SearchParams;
3255
3545
  places: SearchParams;
3546
+ place: PlaceParams;
3256
3547
  reviews: ReviewsParams;
3257
3548
  shopping: SearchParams;
3258
3549
  scholar: SearchParams;
@@ -3365,7 +3656,7 @@ type WebhookEvent = {
3365
3656
  data: MonitorResultsEvent;
3366
3657
  };
3367
3658
 
3368
- declare const VERSION = "0.4.0";
3659
+ declare const VERSION = "0.6.0";
3369
3660
  declare const DEFAULT_BASE_URL = "https://api.serpkite.com";
3370
3661
  interface SerpKiteOptions {
3371
3662
  /** API key (`skt_live_…`). Defaults to the `SERPKITE_API_KEY` environment variable. */
@@ -3486,7 +3777,10 @@ declare class SerpKite {
3486
3777
  results: components["schemas"]["NewsResult"][];
3487
3778
  meta: components["schemas"]["Meta"];
3488
3779
  }>;
3489
- /** Google Maps search (places with coordinates). Accepts `ll` ("@lat,lng,14z"). */
3780
+ /**
3781
+ * Google Maps search (places with coordinates). Accepts `ll` ("@lat,lng,14z"). With
3782
+ * `engine: "yandex"` (where enabled) the places come from Yandex Maps and carry an `oid`.
3783
+ */
3490
3784
  readonly maps: VerticalMethod<SearchParams, {
3491
3785
  request: components["schemas"]["RequestEcho"];
3492
3786
  results: components["schemas"]["PlaceResult"][];
@@ -3498,6 +3792,17 @@ declare class SerpKite {
3498
3792
  results: components["schemas"]["PlaceResult"][];
3499
3793
  meta: components["schemas"]["Meta"];
3500
3794
  }>;
3795
+ /**
3796
+ * Details of one place by `place_id`, `cid` or `fid`, or by a Yandex Maps `oid` (implies
3797
+ * `engine: "yandex"`): address, country, time zone, hours
3798
+ * (`opening_hours` text and structured `weekly_hours`), phones, description and photos.
3799
+ * `results` holds the place, or is empty (not charged) when no place has that id. 1 credit.
3800
+ */
3801
+ readonly place: VerticalMethod<PlaceParams, {
3802
+ request: components["schemas"]["RequestEcho"];
3803
+ results: components["schemas"]["PlaceResult"][];
3804
+ meta: components["schemas"]["Meta"];
3805
+ }>;
3501
3806
  /** Reviews of a place by `place_id`, `cid` or `fid`. Page with `page_token` = `next_page_token`. */
3502
3807
  readonly reviews: VerticalMethod<{
3503
3808
  place_id?: string;
@@ -3744,4 +4049,4 @@ declare function verifyWebhook(secret: string, payload: string | Uint8Array, hea
3744
4049
  */
3745
4050
  declare function parseWebhook(secret: string, payload: string | Uint8Array, headers: HeaderSource, options?: VerifyWebhookOptions): Promise<WebhookEvent>;
3746
4051
 
3747
- export { type Account, type AnswerBox, type AutocompleteResponse, type Batch, type BatchCompletedEvent, type BatchCreateEntry, type BatchCreateError, type BatchCreateOptions, type BatchCreateParams, type BatchCreateResponse, type BatchEndpoint, type BatchStatus, type CompactResponse, type CrawlPage, type CrawlParams, type CrawlResult, type CrawlSitemapMode, type CrawlStats, type CrawlStopReason, type CrawlTask, DEFAULT_BASE_URL, type DomainList, type Engine, type ErrorBody, type ExtractFailure, type ExtractParams, type ExtractResponse, type ExtractResult, type Format, type Highlight, type ImageResult, type ImagesResponse, type KnowledgeGraph, type MapParams, type MapResponse, type MapURL, type MapsResponse, type Meta, type Monitor, type MonitorCreateParams, type MonitorEndpoint, type MonitorList, type MonitorMetadata, type MonitorPageChange, type MonitorResultsEvent, type MonitorRun, type MonitorRunList, type MonitorRunsParams, type MonitorSearch, type MonitorStatus, type MonitorUpdateParams, type NewsResponse, type NewsResult, type OrganicResult, type PageLink, type PageMetadata, type PatentResult, type PatentsResponse, type PeopleAlsoAsk, type PlaceResult, type PlacesResponse, type Provider, type RankMatch, type RankParams, type RankResponse, type RelatedSearch, type RequestEcho, type RequestOptions, type ResponseInfo, type ReviewResult, type ReviewsParams, type ReviewsResponse, type RouteOutcome, type RouteStep, type ScholarResponse, type ScholarResult, type SearchParams, type SearchResponse, SerpKite, SerpKiteError, type SerpKiteOptions, type ShoppingResponse, type ShoppingResult, type Sitelink, type Status, type Suggestion, type TaskCancelResponse, type TaskCompletedEvent, type TaskCreated, type TaskError, type TaskStatus, VERSION, type VerifyWebhookOptions, type VerticalMethod, type VideoResult, type VideosResponse, type WaitOptions, type WebhookEvent, type WebhookEventType, type WebpageParams, type WebpageResponse, type components, isBatchError, type operations, parseRetryAfter, parseWebhook, type paths, verifyWebhook };
4052
+ export { type Account, type AnswerBox, type AutocompleteResponse, type Batch, type BatchCompletedEvent, type BatchCreateEntry, type BatchCreateError, type BatchCreateOptions, type BatchCreateParams, type BatchCreateResponse, type BatchEndpoint, type BatchStatus, type CompactResponse, type CrawlPage, type CrawlParams, type CrawlResult, type CrawlSitemapMode, type CrawlStats, type CrawlStopReason, type CrawlTask, DEFAULT_BASE_URL, type DomainList, type Engine, type ErrorBody, type ExtractFailure, type ExtractParams, type ExtractResponse, type ExtractResult, type Format, type Highlight, type HoursInterval, type ImageResult, type ImagesResponse, type KnowledgeGraph, type MapParams, type MapResponse, type MapURL, type MapsResponse, type Meta, type Monitor, type MonitorCreateParams, type MonitorEndpoint, type MonitorList, type MonitorMetadata, type MonitorPageChange, type MonitorResultsEvent, type MonitorRun, type MonitorRunList, type MonitorRunsParams, type MonitorSearch, type MonitorStatus, type MonitorUpdateParams, type NewsResponse, type NewsResult, type OrganicResult, type PageLink, type PageMetadata, type PatentResult, type PatentsResponse, type PeopleAlsoAsk, type PlaceParams, type PlacePhoto, type PlaceResult, type PlacesResponse, type Provider, type RankMatch, type RankParams, type RankResponse, type RelatedSearch, type RequestEcho, type RequestOptions, type ResponseInfo, type ReviewResult, type ReviewsParams, type ReviewsResponse, type RouteOutcome, type RouteStep, type ScholarResponse, type ScholarResult, type SearchParams, type SearchResponse, SerpKite, SerpKiteError, type SerpKiteOptions, type ShoppingResponse, type ShoppingResult, type Sitelink, type Status, type Suggestion, type TaskCancelResponse, type TaskCompletedEvent, type TaskCreated, type TaskError, type TaskStatus, VERSION, type VerifyWebhookOptions, type VerticalMethod, type VideoResult, type VideosResponse, type WaitOptions, type WebhookEvent, type WebhookEventType, type WebpageParams, type WebpageResponse, type WeeklyHours, type components, isBatchError, type operations, parseRetryAfter, parseWebhook, type paths, verifyWebhook };