mcpscraper-sdk 0.51.0 → 0.52.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
@@ -646,8 +646,8 @@ interface paths {
646
646
  get?: never;
647
647
  put?: never;
648
648
  /**
649
- * Search Google Maps for businesses matching a query and location
650
- * @description Costs 5 credits. Returns up to 50 business/profile candidates.
649
+ * Search Google Maps for business candidates
650
+ * @description Costs 5 Credits. Returns up to 50 candidates. websiteUrl can be null and ordinary search does not open every profile; use /maps/place selectively for complete profile fields.
651
651
  */
652
652
  post: operations["mapsSearch"];
653
653
  delete?: never;
@@ -754,8 +754,8 @@ interface paths {
754
754
  get?: never;
755
755
  put?: never;
756
756
  /**
757
- * Run Google Maps business search across many cities in a state/region at once
758
- * @description Cost is `5 credits × number of markets resolved` for the query — see `GET /workflows/definitions` for related workflow shapes. Failed cities are refunded individually.
757
+ * Start a directory search across selected US cities
758
+ * @description Defaults to a durable background job. Poll its statusUrl without starting another search. background:false runs synchronously. Each failed city is refunded.
759
759
  */
760
760
  post: operations["directoryWorkflow"];
761
761
  delete?: never;
@@ -764,6 +764,26 @@ interface paths {
764
764
  patch?: never;
765
765
  trace?: never;
766
766
  };
767
+ "/directory/jobs/{jobId}": {
768
+ parameters: {
769
+ query?: never;
770
+ header?: never;
771
+ path?: never;
772
+ cookie?: never;
773
+ };
774
+ /**
775
+ * Poll an owner-scoped directory job
776
+ * @description Returns progress, terminal city results, billing settlement, and any CSV artifact without starting or billing another search.
777
+ */
778
+ get: operations["directoryJobStatus"];
779
+ put?: never;
780
+ post?: never;
781
+ delete?: never;
782
+ options?: never;
783
+ head?: never;
784
+ patch?: never;
785
+ trace?: never;
786
+ };
767
787
  "/serp-intelligence/capture": {
768
788
  parameters: {
769
789
  query?: never;
@@ -1183,9 +1203,9 @@ interface components {
1183
1203
  /** @description Stable public failure envelope shared across REST and MCP operations. */
1184
1204
  PublicErrorEnvelope: {
1185
1205
  /** @enum {string} */
1186
- error_code: "request_aborted" | "captcha_exhausted" | "captcha_or_blocked" | "location_mismatch" | "proxy_tunnel_failed" | "proxy_unavailable" | "harvest_timeout" | "mcp_request_timeout" | "mcp_http_error" | "extraction_failed" | "concurrency_limit_exceeded" | "unauthorized" | "forbidden" | "invalid_request" | "rate_limited" | "upstream_rate_limited" | "insufficient_balance" | "service_unavailable" | "response_lost" | "vendor_unavailable" | "page_not_found" | "page_forbidden" | "page_rate_limited" | "page_server_error" | "page_http_error" | "bot_check_unresolved" | "page_too_large" | "page_unreachable" | "browser_session_interrupted" | "site_export_not_found" | "site_export_format_unavailable" | "site_export_read_failed" | "site_export_image_not_found";
1206
+ error_code: "request_aborted" | "captcha_exhausted" | "captcha_or_blocked" | "location_mismatch" | "proxy_tunnel_failed" | "proxy_unavailable" | "harvest_timeout" | "mcp_request_timeout" | "mcp_http_error" | "extraction_failed" | "concurrency_limit_exceeded" | "unauthorized" | "forbidden" | "invalid_request" | "rate_limited" | "upstream_rate_limited" | "insufficient_balance" | "service_unavailable" | "response_lost" | "vendor_unavailable" | "page_not_found" | "page_forbidden" | "page_rate_limited" | "page_server_error" | "page_http_error" | "bot_check_unresolved" | "page_too_large" | "page_unreachable" | "browser_session_interrupted" | "site_export_not_found" | "directory_job_not_found" | "site_export_format_unavailable" | "site_export_read_failed" | "site_export_image_not_found" | "image_url_invalid" | "image_url_not_https" | "image_host_unresolvable" | "image_host_blocked" | "image_redirect_invalid" | "image_source_unavailable" | "image_too_large" | "image_redirect_limit" | "image_base64_invalid" | "image_source_missing" | "image_source_ambiguous" | "image_source_type_invalid" | "image_artifact_not_found" | "image_page_too_large" | "page_image_not_found" | "page_image_candidates_unusable" | "image_format_unsupported" | "image_storage_unconfigured" | "featured_image_unhostable";
1187
1207
  /** @enum {string} */
1188
- error_type: "request_aborted" | "captcha" | "location_mismatch" | "connection" | "timeout" | "extraction" | "concurrency_limit" | "unauthorized" | "forbidden" | "invalid_request" | "rate_limit" | "billing" | "service_unavailable";
1208
+ error_type: "request_aborted" | "captcha" | "location_mismatch" | "connection" | "timeout" | "extraction" | "concurrency_limit" | "unauthorized" | "forbidden" | "invalid_request" | "not_found" | "rate_limit" | "billing" | "service_unavailable";
1189
1209
  message: string;
1190
1210
  retryable: boolean;
1191
1211
  retry_after_seconds?: number;
@@ -1743,26 +1763,6 @@ interface components {
1743
1763
  markdown?: string;
1744
1764
  html?: string;
1745
1765
  };
1746
- MapsSearchRequest: {
1747
- query: string;
1748
- location?: string;
1749
- /** @default us */
1750
- gl: string;
1751
- /** @default en */
1752
- hl: string;
1753
- /** @default 10 */
1754
- maxResults: number;
1755
- /** @default false */
1756
- includeServices: boolean;
1757
- /**
1758
- * @default none
1759
- * @enum {string}
1760
- */
1761
- proxyMode: "configured" | "none";
1762
- proxyZip?: string;
1763
- /** @default false */
1764
- debug: boolean;
1765
- };
1766
1766
  MapsPlaceRequest: {
1767
1767
  businessName: string;
1768
1768
  location: string;
@@ -2150,6 +2150,198 @@ interface components {
2150
2150
  } & {
2151
2151
  [key: string]: unknown;
2152
2152
  };
2153
+ MapsSearchRequest: {
2154
+ query: string;
2155
+ location?: string;
2156
+ /** @default us */
2157
+ gl: string;
2158
+ /** @default en */
2159
+ hl: string;
2160
+ /** @default 10 */
2161
+ maxResults: number;
2162
+ /** @default false */
2163
+ includeServices: boolean;
2164
+ /**
2165
+ * @default none
2166
+ * @enum {string}
2167
+ */
2168
+ proxyMode: "location" | "configured" | "none";
2169
+ proxyZip?: string;
2170
+ /** @default false */
2171
+ debug: boolean;
2172
+ };
2173
+ MapsSearchResponse: {
2174
+ provider?: string;
2175
+ fallbackFrom?: string;
2176
+ acquisitionProvider?: string;
2177
+ query: string;
2178
+ location: string | null;
2179
+ searchQuery: string;
2180
+ /** Format: uri */
2181
+ searchUrl: string;
2182
+ extractedAt: string;
2183
+ requestedMaxResults: number;
2184
+ resultCount: number;
2185
+ results: {
2186
+ position: number;
2187
+ name: string;
2188
+ /** Format: uri */
2189
+ placeUrl: string;
2190
+ cid: string | null;
2191
+ cidDecimal: string | null;
2192
+ rating: string | null;
2193
+ reviewCount: string | null;
2194
+ category: string | null;
2195
+ address: string | null;
2196
+ phone: string | null;
2197
+ hoursStatus: string | null;
2198
+ websiteUrl: string | null;
2199
+ directionsUrl: string | null;
2200
+ metadata: string[];
2201
+ /** @default [] */
2202
+ services: string[];
2203
+ /** @default [] */
2204
+ areasServed: string[];
2205
+ /**
2206
+ * @default unavailable
2207
+ * @enum {string}
2208
+ */
2209
+ profileDetailsStatus: "collected" | "none_exist" | "unavailable" | "not_requested";
2210
+ }[];
2211
+ durationMs: number;
2212
+ } & {
2213
+ [key: string]: unknown;
2214
+ };
2215
+ DirectoryRunRequest: {
2216
+ query: string;
2217
+ /** @default TN */
2218
+ state: string;
2219
+ /** @default 100000 */
2220
+ minPopulation: number;
2221
+ /** @default 2025 */
2222
+ populationYear: 2020 | 2021 | 2022 | 2023 | 2024 | 2025;
2223
+ /** @default 25 */
2224
+ maxCities: number;
2225
+ /** @default 50 */
2226
+ maxResultsPerCity: number;
2227
+ /** @default 5 */
2228
+ concurrency: number;
2229
+ /** @default true */
2230
+ includeZipGroups: boolean;
2231
+ /** @default true */
2232
+ saveCsv: boolean;
2233
+ /** @default true */
2234
+ background: boolean;
2235
+ /** @default us */
2236
+ gl: string;
2237
+ /** @default en */
2238
+ hl: string;
2239
+ /**
2240
+ * @default none
2241
+ * @enum {string}
2242
+ */
2243
+ proxyMode: "configured" | "none";
2244
+ proxyZip?: string;
2245
+ /** @default false */
2246
+ debug: boolean;
2247
+ };
2248
+ DirectoryJobResponse: {
2249
+ jobId: string | null;
2250
+ /** @enum {string} */
2251
+ status: "queued" | "running" | "complete" | "partial" | "empty" | "failed";
2252
+ statusUrl: string | null;
2253
+ query: string;
2254
+ state: string;
2255
+ minPopulation: number;
2256
+ populationYear: number;
2257
+ maxResultsPerCity: number;
2258
+ concurrency: number;
2259
+ /** Format: uri */
2260
+ censusSourceUrl: string;
2261
+ usZipsSourcePath: string | null;
2262
+ warnings: string[];
2263
+ extractedAt: string;
2264
+ selectedCityCount: number;
2265
+ totalResultCount: number;
2266
+ csvPath: string | null;
2267
+ csvArtifact: {
2268
+ artifactId: string;
2269
+ filename: string;
2270
+ contentType: string;
2271
+ bytes: number;
2272
+ rowCount: number;
2273
+ sha256: string;
2274
+ expiresAt: string;
2275
+ downloadUrl: string | null;
2276
+ downloadUrlExpiresAt: string | null;
2277
+ } | null;
2278
+ progress: {
2279
+ completedCities: number;
2280
+ totalCities: number;
2281
+ failedCities: number;
2282
+ };
2283
+ billing: {
2284
+ heldMc: number;
2285
+ finalMc: number | null;
2286
+ refundMc: number | null;
2287
+ };
2288
+ errorCode: string | null;
2289
+ error: string | null;
2290
+ retryable: boolean | null;
2291
+ cities: {
2292
+ city: string;
2293
+ state: string;
2294
+ location: string;
2295
+ cityKey: string;
2296
+ censusName: string;
2297
+ population: number;
2298
+ populationYear: number;
2299
+ zips: string[];
2300
+ counties: string[];
2301
+ /** @enum {string} */
2302
+ status: "ok" | "empty" | "failed";
2303
+ error: string | null;
2304
+ errorCode?: string | null;
2305
+ retryable?: boolean;
2306
+ resultCount: number;
2307
+ durationMs: number;
2308
+ results: {
2309
+ position: number;
2310
+ name: string;
2311
+ /** Format: uri */
2312
+ placeUrl: string;
2313
+ cid: string | null;
2314
+ cidDecimal: string | null;
2315
+ rating: string | null;
2316
+ reviewCount: string | null;
2317
+ category: string | null;
2318
+ address: string | null;
2319
+ phone: string | null;
2320
+ hoursStatus: string | null;
2321
+ websiteUrl: string | null;
2322
+ directionsUrl: string | null;
2323
+ metadata: string[];
2324
+ }[];
2325
+ }[];
2326
+ durationMs: number;
2327
+ truncatedCount?: number;
2328
+ artifact?: {
2329
+ artifactId: string;
2330
+ bytes: number;
2331
+ expiresAt: string;
2332
+ preview: string;
2333
+ };
2334
+ } & {
2335
+ [key: string]: unknown;
2336
+ };
2337
+ DirectoryJobNotFound: {
2338
+ /** @enum {string} */
2339
+ error: "Directory workflow job not found.";
2340
+ /** @enum {string} */
2341
+ error_code: "directory_job_not_found";
2342
+ /** @enum {boolean} */
2343
+ retryable: false;
2344
+ };
2153
2345
  };
2154
2346
  responses: {
2155
2347
  /** @description Missing or invalid `x-api-key`. */
@@ -3442,7 +3634,10 @@ interface operations {
3442
3634
  mapsSearch: {
3443
3635
  parameters: {
3444
3636
  query?: never;
3445
- header?: never;
3637
+ header?: {
3638
+ /** @description Reuse only for an identical retry after an uncertain response. */
3639
+ "Idempotency-Key"?: string;
3640
+ };
3446
3641
  path?: never;
3447
3642
  cookie?: never;
3448
3643
  };
@@ -3452,22 +3647,20 @@ interface operations {
3452
3647
  };
3453
3648
  };
3454
3649
  responses: {
3455
- /** @description Search results. */
3650
+ /** @description Search Google Maps for business candidates */
3456
3651
  200: {
3457
3652
  headers: {
3458
3653
  [name: string]: unknown;
3459
3654
  };
3460
3655
  content: {
3461
- "application/json": {
3462
- [key: string]: unknown;
3463
- };
3656
+ "application/json": components["schemas"]["MapsSearchResponse"];
3464
3657
  };
3465
3658
  };
3466
3659
  400: components["responses"]["BadRequest"];
3467
3660
  402: components["responses"]["InsufficientBalance"];
3468
3661
  429: components["responses"]["ConcurrencyLimitExceeded"];
3469
3662
  500: components["responses"]["ServerError"];
3470
- /** @description Temporarily blocked — retryable. */
3663
+ /** @description Temporarily blocked. */
3471
3664
  503: {
3472
3665
  headers: {
3473
3666
  [name: string]: unknown;
@@ -3676,48 +3869,46 @@ interface operations {
3676
3869
  directoryWorkflow: {
3677
3870
  parameters: {
3678
3871
  query?: never;
3679
- header?: never;
3872
+ header?: {
3873
+ /** @description Reuse only for the same intended directory job. */
3874
+ "Idempotency-Key"?: string;
3875
+ };
3680
3876
  path?: never;
3681
3877
  cookie?: never;
3682
3878
  };
3683
3879
  requestBody: {
3684
3880
  content: {
3685
- "application/json": {
3686
- /** @description Business category to search, e.g. "roofers". */
3687
- query: string;
3688
- /** @description US state code or name. */
3689
- state: string;
3690
- /** @description Minimum city population to include as a market. */
3691
- minPop?: number;
3692
- /** @description Max results per city. */
3693
- perCity?: number;
3694
- };
3881
+ "application/json": components["schemas"]["DirectoryRunRequest"];
3695
3882
  };
3696
3883
  };
3697
3884
  responses: {
3698
- /** @description Per-city results. */
3885
+ /** @description Start a directory search across selected US cities */
3699
3886
  200: {
3700
3887
  headers: {
3701
3888
  [name: string]: unknown;
3702
3889
  };
3703
3890
  content: {
3704
- "application/json": {
3705
- query?: string;
3706
- state?: string;
3707
- totalResultCount?: number;
3708
- cities?: {
3709
- city?: string;
3710
- /** @enum {string} */
3711
- status?: "done" | "failed";
3712
- results?: {
3713
- [key: string]: unknown;
3714
- }[];
3715
- }[];
3716
- };
3891
+ "application/json": components["schemas"]["DirectoryJobResponse"];
3892
+ };
3893
+ };
3894
+ /** @description Start a directory search across selected US cities */
3895
+ 202: {
3896
+ headers: {
3897
+ [name: string]: unknown;
3898
+ };
3899
+ content: {
3900
+ "application/json": components["schemas"]["DirectoryJobResponse"];
3717
3901
  };
3718
3902
  };
3719
3903
  400: components["responses"]["BadRequest"];
3720
3904
  402: components["responses"]["InsufficientBalance"];
3905
+ /** @description Idempotency-Key already used with different input. */
3906
+ 409: {
3907
+ headers: {
3908
+ [name: string]: unknown;
3909
+ };
3910
+ content?: never;
3911
+ };
3721
3912
  429: components["responses"]["ConcurrencyLimitExceeded"];
3722
3913
  /** @description Directory workflow failed. */
3723
3914
  500: {
@@ -3728,6 +3919,37 @@ interface operations {
3728
3919
  };
3729
3920
  };
3730
3921
  };
3922
+ directoryJobStatus: {
3923
+ parameters: {
3924
+ query?: never;
3925
+ header?: never;
3926
+ path: {
3927
+ jobId: string;
3928
+ };
3929
+ cookie?: never;
3930
+ };
3931
+ requestBody?: never;
3932
+ responses: {
3933
+ /** @description Poll an owner-scoped directory job */
3934
+ 200: {
3935
+ headers: {
3936
+ [name: string]: unknown;
3937
+ };
3938
+ content: {
3939
+ "application/json": components["schemas"]["DirectoryJobResponse"];
3940
+ };
3941
+ };
3942
+ /** @description Poll an owner-scoped directory job */
3943
+ 404: {
3944
+ headers: {
3945
+ [name: string]: unknown;
3946
+ };
3947
+ content: {
3948
+ "application/json": components["schemas"]["DirectoryJobNotFound"];
3949
+ };
3950
+ };
3951
+ };
3952
+ };
3731
3953
  serpIntelligenceCapture: {
3732
3954
  parameters: {
3733
3955
  query?: never;
@@ -4496,6 +4718,10 @@ interface ScraperRequestOptions {
4496
4718
  signal?: AbortSignal;
4497
4719
  timeoutMs?: number;
4498
4720
  }
4721
+ type MapsSearchDefaultedKey = 'gl' | 'hl' | 'maxResults' | 'includeServices' | 'proxyMode' | 'debug';
4722
+ type MapsSearchParams = Omit<RequestBodyOf<'mapsSearch'>, MapsSearchDefaultedKey> & Partial<Pick<RequestBodyOf<'mapsSearch'>, MapsSearchDefaultedKey>>;
4723
+ type DirectoryDefaultedKey = 'state' | 'minPopulation' | 'populationYear' | 'maxCities' | 'maxResultsPerCity' | 'concurrency' | 'includeZipGroups' | 'saveCsv' | 'background' | 'gl' | 'hl' | 'proxyMode' | 'debug';
4724
+ type DirectoryRunParams = Omit<RequestBodyOf<'directoryWorkflow'>, DirectoryDefaultedKey> & Partial<Pick<RequestBodyOf<'directoryWorkflow'>, DirectoryDefaultedKey>>;
4499
4725
  interface ExtractSiteOptions extends ScraperRequestOptions {
4500
4726
  idempotencyKey?: string;
4501
4727
  }
@@ -4669,7 +4895,38 @@ declare class VideoNamespace {
4669
4895
  declare class MapsNamespace {
4670
4896
  private readonly r;
4671
4897
  constructor(r: Requester);
4672
- search(params: RequestBodyOf<'mapsSearch'>, options?: ScraperRequestOptions): Promise<{
4898
+ search(params: MapsSearchParams, options?: ScraperRequestOptions & IdempotentRequestOptions): Promise<{
4899
+ provider?: string;
4900
+ fallbackFrom?: string;
4901
+ acquisitionProvider?: string;
4902
+ query: string;
4903
+ location: string | null;
4904
+ searchQuery: string;
4905
+ searchUrl: string;
4906
+ extractedAt: string;
4907
+ requestedMaxResults: number;
4908
+ resultCount: number;
4909
+ results: {
4910
+ position: number;
4911
+ name: string;
4912
+ placeUrl: string;
4913
+ cid: string | null;
4914
+ cidDecimal: string | null;
4915
+ rating: string | null;
4916
+ reviewCount: string | null;
4917
+ category: string | null;
4918
+ address: string | null;
4919
+ phone: string | null;
4920
+ hoursStatus: string | null;
4921
+ websiteUrl: string | null;
4922
+ directionsUrl: string | null;
4923
+ metadata: string[];
4924
+ services: string[];
4925
+ areasServed: string[];
4926
+ profileDetailsStatus: "collected" | "none_exist" | "unavailable" | "not_requested";
4927
+ }[];
4928
+ durationMs: number;
4929
+ } & {
4673
4930
  [key: string]: unknown;
4674
4931
  }>;
4675
4932
  place(params: RequestBodyOf<'mapsPlaceIntel'>, options?: ScraperRequestOptions & {
@@ -4751,17 +5008,177 @@ declare class MapsNamespace {
4751
5008
  declare class DirectoryNamespace {
4752
5009
  private readonly r;
4753
5010
  constructor(r: Requester);
4754
- run(params: RequestBodyOf<'directoryWorkflow'>): Promise<{
4755
- query?: string;
4756
- state?: string;
4757
- totalResultCount?: number;
4758
- cities?: {
4759
- city?: string;
4760
- status?: "done" | "failed";
4761
- results?: {
4762
- [key: string]: unknown;
5011
+ run(params: DirectoryRunParams, options?: ScraperRequestOptions & {
5012
+ idempotencyKey?: string;
5013
+ }): Promise<{
5014
+ jobId: string | null;
5015
+ status: "queued" | "running" | "complete" | "partial" | "empty" | "failed";
5016
+ statusUrl: string | null;
5017
+ query: string;
5018
+ state: string;
5019
+ minPopulation: number;
5020
+ populationYear: number;
5021
+ maxResultsPerCity: number;
5022
+ concurrency: number;
5023
+ censusSourceUrl: string;
5024
+ usZipsSourcePath: string | null;
5025
+ warnings: string[];
5026
+ extractedAt: string;
5027
+ selectedCityCount: number;
5028
+ totalResultCount: number;
5029
+ csvPath: string | null;
5030
+ csvArtifact: {
5031
+ artifactId: string;
5032
+ filename: string;
5033
+ contentType: string;
5034
+ bytes: number;
5035
+ rowCount: number;
5036
+ sha256: string;
5037
+ expiresAt: string;
5038
+ downloadUrl: string | null;
5039
+ downloadUrlExpiresAt: string | null;
5040
+ } | null;
5041
+ progress: {
5042
+ completedCities: number;
5043
+ totalCities: number;
5044
+ failedCities: number;
5045
+ };
5046
+ billing: {
5047
+ heldMc: number;
5048
+ finalMc: number | null;
5049
+ refundMc: number | null;
5050
+ };
5051
+ errorCode: string | null;
5052
+ error: string | null;
5053
+ retryable: boolean | null;
5054
+ cities: {
5055
+ city: string;
5056
+ state: string;
5057
+ location: string;
5058
+ cityKey: string;
5059
+ censusName: string;
5060
+ population: number;
5061
+ populationYear: number;
5062
+ zips: string[];
5063
+ counties: string[];
5064
+ status: "ok" | "empty" | "failed";
5065
+ error: string | null;
5066
+ errorCode?: string | null;
5067
+ retryable?: boolean;
5068
+ resultCount: number;
5069
+ durationMs: number;
5070
+ results: {
5071
+ position: number;
5072
+ name: string;
5073
+ placeUrl: string;
5074
+ cid: string | null;
5075
+ cidDecimal: string | null;
5076
+ rating: string | null;
5077
+ reviewCount: string | null;
5078
+ category: string | null;
5079
+ address: string | null;
5080
+ phone: string | null;
5081
+ hoursStatus: string | null;
5082
+ websiteUrl: string | null;
5083
+ directionsUrl: string | null;
5084
+ metadata: string[];
4763
5085
  }[];
4764
5086
  }[];
5087
+ durationMs: number;
5088
+ truncatedCount?: number;
5089
+ artifact?: {
5090
+ artifactId: string;
5091
+ bytes: number;
5092
+ expiresAt: string;
5093
+ preview: string;
5094
+ };
5095
+ } & {
5096
+ [key: string]: unknown;
5097
+ }>;
5098
+ status(jobId: string, options?: ScraperRequestOptions): Promise<{
5099
+ jobId: string | null;
5100
+ status: "queued" | "running" | "complete" | "partial" | "empty" | "failed";
5101
+ statusUrl: string | null;
5102
+ query: string;
5103
+ state: string;
5104
+ minPopulation: number;
5105
+ populationYear: number;
5106
+ maxResultsPerCity: number;
5107
+ concurrency: number;
5108
+ censusSourceUrl: string;
5109
+ usZipsSourcePath: string | null;
5110
+ warnings: string[];
5111
+ extractedAt: string;
5112
+ selectedCityCount: number;
5113
+ totalResultCount: number;
5114
+ csvPath: string | null;
5115
+ csvArtifact: {
5116
+ artifactId: string;
5117
+ filename: string;
5118
+ contentType: string;
5119
+ bytes: number;
5120
+ rowCount: number;
5121
+ sha256: string;
5122
+ expiresAt: string;
5123
+ downloadUrl: string | null;
5124
+ downloadUrlExpiresAt: string | null;
5125
+ } | null;
5126
+ progress: {
5127
+ completedCities: number;
5128
+ totalCities: number;
5129
+ failedCities: number;
5130
+ };
5131
+ billing: {
5132
+ heldMc: number;
5133
+ finalMc: number | null;
5134
+ refundMc: number | null;
5135
+ };
5136
+ errorCode: string | null;
5137
+ error: string | null;
5138
+ retryable: boolean | null;
5139
+ cities: {
5140
+ city: string;
5141
+ state: string;
5142
+ location: string;
5143
+ cityKey: string;
5144
+ censusName: string;
5145
+ population: number;
5146
+ populationYear: number;
5147
+ zips: string[];
5148
+ counties: string[];
5149
+ status: "ok" | "empty" | "failed";
5150
+ error: string | null;
5151
+ errorCode?: string | null;
5152
+ retryable?: boolean;
5153
+ resultCount: number;
5154
+ durationMs: number;
5155
+ results: {
5156
+ position: number;
5157
+ name: string;
5158
+ placeUrl: string;
5159
+ cid: string | null;
5160
+ cidDecimal: string | null;
5161
+ rating: string | null;
5162
+ reviewCount: string | null;
5163
+ category: string | null;
5164
+ address: string | null;
5165
+ phone: string | null;
5166
+ hoursStatus: string | null;
5167
+ websiteUrl: string | null;
5168
+ directionsUrl: string | null;
5169
+ metadata: string[];
5170
+ }[];
5171
+ }[];
5172
+ durationMs: number;
5173
+ truncatedCount?: number;
5174
+ artifact?: {
5175
+ artifactId: string;
5176
+ bytes: number;
5177
+ expiresAt: string;
5178
+ preview: string;
5179
+ };
5180
+ } & {
5181
+ [key: string]: unknown;
4765
5182
  }>;
4766
5183
  }
4767
5184
  declare class SerpIntelligenceNamespace {
@@ -5313,4 +5730,4 @@ declare class ScraperApiError extends Error {
5313
5730
  };
5314
5731
  }
5315
5732
 
5316
- export { type ArchiveReadParams, type ConcurrencyAccountViewBody, type ConcurrencyLimitBody, type ConcurrencyPackBody, type ExtractSiteOptions, type GmailMutationOptions, type HarvestParams, type IdempotentRequestOptions, type InsufficientBalanceBody, type PublicErrorEnvelopeBody, ScraperApiError, ScraperClient, type ScraperClientOptions, type ScraperRequestOptions, type SearchSerpParams, type SerpIntelligenceCaptureOptions, type SerpIntelligenceCaptureParams, type SerpIntelligenceCaptureReceipt, type StructuredErrorBody, type components, type operations, type paths };
5733
+ export { type ArchiveReadParams, type ConcurrencyAccountViewBody, type ConcurrencyLimitBody, type ConcurrencyPackBody, type DirectoryRunParams, type ExtractSiteOptions, type GmailMutationOptions, type HarvestParams, type IdempotentRequestOptions, type InsufficientBalanceBody, type MapsSearchParams, type PublicErrorEnvelopeBody, ScraperApiError, ScraperClient, type ScraperClientOptions, type ScraperRequestOptions, type SearchSerpParams, type SerpIntelligenceCaptureOptions, type SerpIntelligenceCaptureParams, type SerpIntelligenceCaptureReceipt, type StructuredErrorBody, type components, type operations, type paths };