getanyapi 0.1.0__py3-none-any.whl
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.
- getanyapi/__init__.py +76 -0
- getanyapi/_account.py +132 -0
- getanyapi/_async_client.py +215 -0
- getanyapi/_client.py +274 -0
- getanyapi/_errors.py +115 -0
- getanyapi/_pagination.py +295 -0
- getanyapi/_transport.py +239 -0
- getanyapi/platforms/__init__.py +89 -0
- getanyapi/platforms/ahrefs.py +384 -0
- getanyapi/platforms/airbnb.py +120 -0
- getanyapi/platforms/alibaba.py +95 -0
- getanyapi/platforms/amazon.py +442 -0
- getanyapi/platforms/appstore.py +95 -0
- getanyapi/platforms/bluesky.py +215 -0
- getanyapi/platforms/booking.py +128 -0
- getanyapi/platforms/coinmarketcap.py +113 -0
- getanyapi/platforms/congress.py +106 -0
- getanyapi/platforms/dexscreener.py +104 -0
- getanyapi/platforms/ebay.py +215 -0
- getanyapi/platforms/email.py +166 -0
- getanyapi/platforms/facebook.py +2324 -0
- getanyapi/platforms/fiverr.py +122 -0
- getanyapi/platforms/github.py +954 -0
- getanyapi/platforms/glassdoor.py +93 -0
- getanyapi/platforms/google.py +232 -0
- getanyapi/platforms/google_ads.py +380 -0
- getanyapi/platforms/google_finance.py +170 -0
- getanyapi/platforms/google_shopping.py +103 -0
- getanyapi/platforms/hackernews.py +276 -0
- getanyapi/platforms/indeed.py +114 -0
- getanyapi/platforms/instagram.py +1868 -0
- getanyapi/platforms/linkedin.py +1064 -0
- getanyapi/platforms/maps.py +412 -0
- getanyapi/platforms/pandaexpress.py +262 -0
- getanyapi/platforms/person.py +96 -0
- getanyapi/platforms/pinterest.py +96 -0
- getanyapi/platforms/playstore.py +99 -0
- getanyapi/platforms/polymarket.py +109 -0
- getanyapi/platforms/realtor.py +104 -0
- getanyapi/platforms/reddit.py +582 -0
- getanyapi/platforms/redfin.py +95 -0
- getanyapi/platforms/rednote.py +807 -0
- getanyapi/platforms/sec.py +118 -0
- getanyapi/platforms/semrush.py +358 -0
- getanyapi/platforms/snapchat.py +146 -0
- getanyapi/platforms/social.py +105 -0
- getanyapi/platforms/spotify.py +588 -0
- getanyapi/platforms/substack.py +142 -0
- getanyapi/platforms/threads.py +358 -0
- getanyapi/platforms/tiktok.py +1827 -0
- getanyapi/platforms/tiktok_shop.py +536 -0
- getanyapi/platforms/tripadvisor.py +180 -0
- getanyapi/platforms/trustpilot.py +114 -0
- getanyapi/platforms/truthsocial.py +226 -0
- getanyapi/platforms/twitter.py +798 -0
- getanyapi/platforms/upwork.py +119 -0
- getanyapi/platforms/walmart.py +93 -0
- getanyapi/platforms/web.py +264 -0
- getanyapi/platforms/whatsapp.py +91 -0
- getanyapi/platforms/yahoo_finance.py +95 -0
- getanyapi/platforms/yelp.py +141 -0
- getanyapi/platforms/youtube.py +1452 -0
- getanyapi/platforms/zillow.py +218 -0
- getanyapi/py.typed +0 -0
- getanyapi/types.py +170 -0
- getanyapi-0.1.0.dist-info/METADATA +155 -0
- getanyapi-0.1.0.dist-info/RECORD +68 -0
- getanyapi-0.1.0.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
# Generated - do not edit. Regenerate with: pnpm generate
|
|
2
|
+
"""Generated namespace module for the amazon platform."""
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
from typing import Literal, TYPE_CHECKING
|
|
7
|
+
|
|
8
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
9
|
+
from typing_extensions import NotRequired, Required, TypedDict, Unpack
|
|
10
|
+
|
|
11
|
+
from ..types import RequestOptions, RunResult
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from .._async_client import AsyncAnyAPI
|
|
15
|
+
from .._client import AnyAPI
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class AmazonAsinsInput(TypedDict, total=False):
|
|
19
|
+
"""Input for Amazon Products by ASIN."""
|
|
20
|
+
|
|
21
|
+
amazonDomain: NotRequired[str]
|
|
22
|
+
"""Amazon marketplace domain to fetch products from (e.g. amazon.com, amazon.de, amazon.co.uk). Default: amazon.com."""
|
|
23
|
+
asins: Required[list[str]]
|
|
24
|
+
"""Up to 10 Amazon ASINs to look up (e.g. ["B0CHX1W1XY", "B09G9FPHY6"])."""
|
|
25
|
+
limit: NotRequired[int]
|
|
26
|
+
"""Maximum number of results to return (1-10, default 10). You are billed per result returned, so a lower limit costs less. Range: 1 to 10."""
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class AmazonBestsellersInput(TypedDict, total=False):
|
|
30
|
+
"""Input for Amazon Bestsellers."""
|
|
31
|
+
|
|
32
|
+
limit: NotRequired[int]
|
|
33
|
+
"""Maximum number of results to return (1-20, default 20). You are billed per result returned, so a lower limit costs less. Range: 1 to 20."""
|
|
34
|
+
url: Required[str]
|
|
35
|
+
"""Amazon Best Sellers category URL (e.g. https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics)."""
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class AmazonProductInput(TypedDict, total=False):
|
|
39
|
+
"""Input for Amazon Product."""
|
|
40
|
+
|
|
41
|
+
url: Required[str]
|
|
42
|
+
"""Full Amazon product URL (e.g. https://www.amazon.com/dp/B0CX23V2ZK)."""
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class AmazonReviewsInput(TypedDict, total=False):
|
|
46
|
+
"""Input for Amazon Reviews."""
|
|
47
|
+
|
|
48
|
+
limit: NotRequired[int]
|
|
49
|
+
"""Maximum number of results to return (1-50, default 50). You are billed per result returned, so a lower limit costs less. Range: 1 to 50."""
|
|
50
|
+
product: Required[str]
|
|
51
|
+
"""Amazon product ASIN or full product URL (e.g. B07CMS5Q6P)."""
|
|
52
|
+
region: NotRequired[
|
|
53
|
+
Literal[
|
|
54
|
+
"amazon.com",
|
|
55
|
+
"amazon.ca",
|
|
56
|
+
"amazon.de",
|
|
57
|
+
"amazon.fr",
|
|
58
|
+
"amazon.co.uk",
|
|
59
|
+
"amazon.it",
|
|
60
|
+
"amazon.es",
|
|
61
|
+
"amazon.com.au",
|
|
62
|
+
"amazon.co.jp",
|
|
63
|
+
"amazon.com.br",
|
|
64
|
+
"amazon.com.mx",
|
|
65
|
+
"amazon.nl",
|
|
66
|
+
"amazon.ie",
|
|
67
|
+
"amazon.se",
|
|
68
|
+
"amazon.com.tr",
|
|
69
|
+
"amazon.ae",
|
|
70
|
+
"amazon.sg",
|
|
71
|
+
"amazon.sa",
|
|
72
|
+
"amazon.pl",
|
|
73
|
+
"amazon.com.be",
|
|
74
|
+
"amazon.eg",
|
|
75
|
+
"amazon.in",
|
|
76
|
+
]
|
|
77
|
+
]
|
|
78
|
+
"""Amazon marketplace domain the product ASIN belongs to (e.g. amazon.co.uk). Default: amazon.com."""
|
|
79
|
+
sort: NotRequired[Literal["helpful", "recent"]]
|
|
80
|
+
"""Review sort order: most helpful first or most recent first (e.g. recent). Default: helpful."""
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
class AmazonSearchInput(TypedDict, total=False):
|
|
84
|
+
"""Input for Amazon Search."""
|
|
85
|
+
|
|
86
|
+
limit: NotRequired[int]
|
|
87
|
+
"""Maximum number of results to return (1-20, default 20). You are billed per result returned, so a lower limit costs less. Range: 1 to 20."""
|
|
88
|
+
url: Required[str]
|
|
89
|
+
"""Amazon search or category URL to pull results from (e.g. https://www.amazon.com/s?k=gaming+mouse)."""
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
class AmazonAsinsData(BaseModel):
|
|
93
|
+
items: list[AmazonAsinsItem] = Field(
|
|
94
|
+
description="Product records: ASIN, title, brand, price, ratings, images, and attributes."
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
class AmazonAsinsItem(BaseModel):
|
|
99
|
+
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
100
|
+
|
|
101
|
+
asin: str = Field(description="Amazon Standard Identification Number.")
|
|
102
|
+
brand: str | None = Field(
|
|
103
|
+
default=None, description="Present whenever the upstream returns this record."
|
|
104
|
+
)
|
|
105
|
+
condition: str | None = None
|
|
106
|
+
currency: str | None = None
|
|
107
|
+
image: str | None = Field(
|
|
108
|
+
default=None,
|
|
109
|
+
description="Primary product image URL. Present whenever the upstream returns this record.",
|
|
110
|
+
)
|
|
111
|
+
in_stock: bool | None = Field(default=None, alias="inStock")
|
|
112
|
+
price: float | None = Field(
|
|
113
|
+
default=None, description="Buy-box price; 0 when no offer is available."
|
|
114
|
+
)
|
|
115
|
+
rating: float | None = Field(default=None, description="Average star rating, 0-5.")
|
|
116
|
+
reviews_count: int | None = Field(default=None, alias="reviewsCount")
|
|
117
|
+
seller_name: str | None = Field(default=None, alias="sellerName")
|
|
118
|
+
title: str
|
|
119
|
+
url: str
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
class AmazonBestsellersData(BaseModel):
|
|
123
|
+
items: list[AmazonBestsellersItem] = Field(
|
|
124
|
+
description="Best-seller product records: category rank, title, price, rating, thumbnail, and product URL."
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
class AmazonBestsellersItem(BaseModel):
|
|
129
|
+
model_config = ConfigDict(extra="allow")
|
|
130
|
+
|
|
131
|
+
asin: str
|
|
132
|
+
title: str
|
|
133
|
+
url: str
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
class AmazonProductData(BaseModel):
|
|
137
|
+
items: list[AmazonProductItem] = Field(
|
|
138
|
+
description="Product detail records: title, url, asin, brand, price amount (when in stock), images, rating, review count, and (passed through) variant details and attributes."
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
class AmazonProductItem(BaseModel):
|
|
143
|
+
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
144
|
+
|
|
145
|
+
asin: str
|
|
146
|
+
brand: str | None = Field(
|
|
147
|
+
default=None,
|
|
148
|
+
description="Manufacturer or brand name. Present whenever the upstream returns this record.",
|
|
149
|
+
)
|
|
150
|
+
images: list[str] | None = Field(
|
|
151
|
+
default=None,
|
|
152
|
+
description="High-resolution product image URLs. Present whenever the upstream returns this record.",
|
|
153
|
+
)
|
|
154
|
+
price_amount: float | None = Field(
|
|
155
|
+
default=None,
|
|
156
|
+
alias="priceAmount",
|
|
157
|
+
description="Current price as a numeric amount. Absent when the listing has no buyable price (out of stock).",
|
|
158
|
+
)
|
|
159
|
+
rating: float | None = Field(
|
|
160
|
+
default=None, description="Average customer star rating, 0 to 5."
|
|
161
|
+
)
|
|
162
|
+
review_count: int | None = Field(
|
|
163
|
+
default=None,
|
|
164
|
+
alias="reviewCount",
|
|
165
|
+
description="Total number of customer reviews.",
|
|
166
|
+
)
|
|
167
|
+
title: str
|
|
168
|
+
url: str
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
class AmazonReviewsData(BaseModel):
|
|
172
|
+
items: list[AmazonReviewsItem] = Field(
|
|
173
|
+
description="Customer review records: star rating, title, review text, date, reviewer, and verified-purchase status."
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
class AmazonReviewsItem(BaseModel):
|
|
178
|
+
model_config = ConfigDict(extra="allow")
|
|
179
|
+
|
|
180
|
+
rating: float
|
|
181
|
+
text: str
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
class AmazonSearchData(BaseModel):
|
|
185
|
+
items: list[AmazonSearchItem] = Field(
|
|
186
|
+
description="Search result product records: title, ASIN, price amount, currency, rating, review count, and thumbnail."
|
|
187
|
+
)
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
class AmazonSearchItem(BaseModel):
|
|
191
|
+
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
192
|
+
|
|
193
|
+
asin: str
|
|
194
|
+
currency: str | None = Field(
|
|
195
|
+
default=None, description="Currency symbol or code for the price."
|
|
196
|
+
)
|
|
197
|
+
price_amount: float | None = Field(
|
|
198
|
+
default=None,
|
|
199
|
+
alias="priceAmount",
|
|
200
|
+
description="Current price as a numeric amount.",
|
|
201
|
+
)
|
|
202
|
+
rating: float | None = Field(default=None, description="Average star rating.")
|
|
203
|
+
review_count: int | None = Field(
|
|
204
|
+
default=None, alias="reviewCount", description="Number of customer reviews."
|
|
205
|
+
)
|
|
206
|
+
thumbnail: str | None = Field(
|
|
207
|
+
default=None,
|
|
208
|
+
description="Product thumbnail image URL. Present whenever the upstream returns this record.",
|
|
209
|
+
)
|
|
210
|
+
title: str
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
class AmazonNamespace:
|
|
214
|
+
"""Typed methods for this platform. Attached lazily to the client."""
|
|
215
|
+
|
|
216
|
+
def __init__(self, client: "AnyAPI") -> None:
|
|
217
|
+
self._client = client
|
|
218
|
+
|
|
219
|
+
def asins(
|
|
220
|
+
self,
|
|
221
|
+
*,
|
|
222
|
+
options: RequestOptions | None = None,
|
|
223
|
+
**input: Unpack[AmazonAsinsInput],
|
|
224
|
+
) -> RunResult[AmazonAsinsData]:
|
|
225
|
+
"""Amazon Products by ASIN
|
|
226
|
+
|
|
227
|
+
Look up to 10 Amazon products in one call by ASIN - title, brand, price,
|
|
228
|
+
ratings, images, and attributes - as normalized JSON with flat per-request
|
|
229
|
+
USD pricing.
|
|
230
|
+
|
|
231
|
+
Price: $0.0035 per asin.
|
|
232
|
+
|
|
233
|
+
Example:
|
|
234
|
+
res = client.amazon.asins(asins=["B09G9FPHY6"], limit=3)
|
|
235
|
+
"""
|
|
236
|
+
raw = self._client._run_raw( # pyright: ignore[reportPrivateUsage]
|
|
237
|
+
"amazon.asins", dict(input), options
|
|
238
|
+
)
|
|
239
|
+
return RunResult[AmazonAsinsData].model_validate(raw)
|
|
240
|
+
|
|
241
|
+
def bestsellers(
|
|
242
|
+
self,
|
|
243
|
+
*,
|
|
244
|
+
options: RequestOptions | None = None,
|
|
245
|
+
**input: Unpack[AmazonBestsellersInput],
|
|
246
|
+
) -> RunResult[AmazonBestsellersData]:
|
|
247
|
+
"""Amazon Bestsellers
|
|
248
|
+
|
|
249
|
+
List the top-ranked products of any Amazon Best Sellers category - rank,
|
|
250
|
+
title, price, and rating - in one normalized, flat-priced request.
|
|
251
|
+
|
|
252
|
+
Price: $0.0041 per result.
|
|
253
|
+
|
|
254
|
+
Example:
|
|
255
|
+
res = client.amazon.bestsellers(limit=3, url="https://www.amazon.com/gp/bestsellers/electronics")
|
|
256
|
+
"""
|
|
257
|
+
raw = self._client._run_raw( # pyright: ignore[reportPrivateUsage]
|
|
258
|
+
"amazon.bestsellers", dict(input), options
|
|
259
|
+
)
|
|
260
|
+
return RunResult[AmazonBestsellersData].model_validate(raw)
|
|
261
|
+
|
|
262
|
+
def product(
|
|
263
|
+
self,
|
|
264
|
+
*,
|
|
265
|
+
options: RequestOptions | None = None,
|
|
266
|
+
**input: Unpack[AmazonProductInput],
|
|
267
|
+
) -> RunResult[AmazonProductData]:
|
|
268
|
+
"""Amazon Product
|
|
269
|
+
|
|
270
|
+
Fetch full Amazon product details (title, brand, price when in stock,
|
|
271
|
+
images, ratings, review count, variants, and attributes) from a product URL,
|
|
272
|
+
with transparent per-request USD pricing.
|
|
273
|
+
|
|
274
|
+
Price: $0.001 per request plus $0.0081 per result.
|
|
275
|
+
|
|
276
|
+
Example:
|
|
277
|
+
res = client.amazon.product(url="https://www.amazon.com/dp/B00NTCH52W")
|
|
278
|
+
"""
|
|
279
|
+
raw = self._client._run_raw( # pyright: ignore[reportPrivateUsage]
|
|
280
|
+
"amazon.product", dict(input), options
|
|
281
|
+
)
|
|
282
|
+
return RunResult[AmazonProductData].model_validate(raw)
|
|
283
|
+
|
|
284
|
+
def reviews(
|
|
285
|
+
self,
|
|
286
|
+
*,
|
|
287
|
+
options: RequestOptions | None = None,
|
|
288
|
+
**input: Unpack[AmazonReviewsInput],
|
|
289
|
+
) -> RunResult[AmazonReviewsData]:
|
|
290
|
+
"""Amazon Reviews
|
|
291
|
+
|
|
292
|
+
Pull up to 50 customer reviews for any Amazon product by ASIN or URL -
|
|
293
|
+
rating, title, text, date, and verified-purchase badge - at a flat
|
|
294
|
+
per-request USD price.
|
|
295
|
+
|
|
296
|
+
Price: $0.01625 per request.
|
|
297
|
+
|
|
298
|
+
Example:
|
|
299
|
+
res = client.amazon.reviews(limit=3, product="B07FZ8S74R")
|
|
300
|
+
"""
|
|
301
|
+
raw = self._client._run_raw( # pyright: ignore[reportPrivateUsage]
|
|
302
|
+
"amazon.reviews", dict(input), options
|
|
303
|
+
)
|
|
304
|
+
return RunResult[AmazonReviewsData].model_validate(raw)
|
|
305
|
+
|
|
306
|
+
def search(
|
|
307
|
+
self,
|
|
308
|
+
*,
|
|
309
|
+
options: RequestOptions | None = None,
|
|
310
|
+
**input: Unpack[AmazonSearchInput],
|
|
311
|
+
) -> RunResult[AmazonSearchData]:
|
|
312
|
+
"""Amazon Search
|
|
313
|
+
|
|
314
|
+
Search Amazon from any search or category URL and get up to 20 matching
|
|
315
|
+
products - title, price, rating, and thumbnail - in one normalized,
|
|
316
|
+
flat-priced response.
|
|
317
|
+
|
|
318
|
+
Price: $0.0035 per result.
|
|
319
|
+
|
|
320
|
+
Example:
|
|
321
|
+
res = client.amazon.search(limit=3, url="https://www.amazon.com/s?k=laptop")
|
|
322
|
+
"""
|
|
323
|
+
raw = self._client._run_raw( # pyright: ignore[reportPrivateUsage]
|
|
324
|
+
"amazon.search", dict(input), options
|
|
325
|
+
)
|
|
326
|
+
return RunResult[AmazonSearchData].model_validate(raw)
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
class AsyncAmazonNamespace:
|
|
330
|
+
"""Typed methods for this platform. Attached lazily to the client."""
|
|
331
|
+
|
|
332
|
+
def __init__(self, client: "AsyncAnyAPI") -> None:
|
|
333
|
+
self._client = client
|
|
334
|
+
|
|
335
|
+
async def asins(
|
|
336
|
+
self,
|
|
337
|
+
*,
|
|
338
|
+
options: RequestOptions | None = None,
|
|
339
|
+
**input: Unpack[AmazonAsinsInput],
|
|
340
|
+
) -> RunResult[AmazonAsinsData]:
|
|
341
|
+
"""Amazon Products by ASIN
|
|
342
|
+
|
|
343
|
+
Look up to 10 Amazon products in one call by ASIN - title, brand, price,
|
|
344
|
+
ratings, images, and attributes - as normalized JSON with flat per-request
|
|
345
|
+
USD pricing.
|
|
346
|
+
|
|
347
|
+
Price: $0.0035 per asin.
|
|
348
|
+
|
|
349
|
+
Example:
|
|
350
|
+
res = client.amazon.asins(asins=["B09G9FPHY6"], limit=3)
|
|
351
|
+
"""
|
|
352
|
+
raw = await self._client._arun_raw( # pyright: ignore[reportPrivateUsage]
|
|
353
|
+
"amazon.asins", dict(input), options
|
|
354
|
+
)
|
|
355
|
+
return RunResult[AmazonAsinsData].model_validate(raw)
|
|
356
|
+
|
|
357
|
+
async def bestsellers(
|
|
358
|
+
self,
|
|
359
|
+
*,
|
|
360
|
+
options: RequestOptions | None = None,
|
|
361
|
+
**input: Unpack[AmazonBestsellersInput],
|
|
362
|
+
) -> RunResult[AmazonBestsellersData]:
|
|
363
|
+
"""Amazon Bestsellers
|
|
364
|
+
|
|
365
|
+
List the top-ranked products of any Amazon Best Sellers category - rank,
|
|
366
|
+
title, price, and rating - in one normalized, flat-priced request.
|
|
367
|
+
|
|
368
|
+
Price: $0.0041 per result.
|
|
369
|
+
|
|
370
|
+
Example:
|
|
371
|
+
res = client.amazon.bestsellers(limit=3, url="https://www.amazon.com/gp/bestsellers/electronics")
|
|
372
|
+
"""
|
|
373
|
+
raw = await self._client._arun_raw( # pyright: ignore[reportPrivateUsage]
|
|
374
|
+
"amazon.bestsellers", dict(input), options
|
|
375
|
+
)
|
|
376
|
+
return RunResult[AmazonBestsellersData].model_validate(raw)
|
|
377
|
+
|
|
378
|
+
async def product(
|
|
379
|
+
self,
|
|
380
|
+
*,
|
|
381
|
+
options: RequestOptions | None = None,
|
|
382
|
+
**input: Unpack[AmazonProductInput],
|
|
383
|
+
) -> RunResult[AmazonProductData]:
|
|
384
|
+
"""Amazon Product
|
|
385
|
+
|
|
386
|
+
Fetch full Amazon product details (title, brand, price when in stock,
|
|
387
|
+
images, ratings, review count, variants, and attributes) from a product URL,
|
|
388
|
+
with transparent per-request USD pricing.
|
|
389
|
+
|
|
390
|
+
Price: $0.001 per request plus $0.0081 per result.
|
|
391
|
+
|
|
392
|
+
Example:
|
|
393
|
+
res = client.amazon.product(url="https://www.amazon.com/dp/B00NTCH52W")
|
|
394
|
+
"""
|
|
395
|
+
raw = await self._client._arun_raw( # pyright: ignore[reportPrivateUsage]
|
|
396
|
+
"amazon.product", dict(input), options
|
|
397
|
+
)
|
|
398
|
+
return RunResult[AmazonProductData].model_validate(raw)
|
|
399
|
+
|
|
400
|
+
async def reviews(
|
|
401
|
+
self,
|
|
402
|
+
*,
|
|
403
|
+
options: RequestOptions | None = None,
|
|
404
|
+
**input: Unpack[AmazonReviewsInput],
|
|
405
|
+
) -> RunResult[AmazonReviewsData]:
|
|
406
|
+
"""Amazon Reviews
|
|
407
|
+
|
|
408
|
+
Pull up to 50 customer reviews for any Amazon product by ASIN or URL -
|
|
409
|
+
rating, title, text, date, and verified-purchase badge - at a flat
|
|
410
|
+
per-request USD price.
|
|
411
|
+
|
|
412
|
+
Price: $0.01625 per request.
|
|
413
|
+
|
|
414
|
+
Example:
|
|
415
|
+
res = client.amazon.reviews(limit=3, product="B07FZ8S74R")
|
|
416
|
+
"""
|
|
417
|
+
raw = await self._client._arun_raw( # pyright: ignore[reportPrivateUsage]
|
|
418
|
+
"amazon.reviews", dict(input), options
|
|
419
|
+
)
|
|
420
|
+
return RunResult[AmazonReviewsData].model_validate(raw)
|
|
421
|
+
|
|
422
|
+
async def search(
|
|
423
|
+
self,
|
|
424
|
+
*,
|
|
425
|
+
options: RequestOptions | None = None,
|
|
426
|
+
**input: Unpack[AmazonSearchInput],
|
|
427
|
+
) -> RunResult[AmazonSearchData]:
|
|
428
|
+
"""Amazon Search
|
|
429
|
+
|
|
430
|
+
Search Amazon from any search or category URL and get up to 20 matching
|
|
431
|
+
products - title, price, rating, and thumbnail - in one normalized,
|
|
432
|
+
flat-priced response.
|
|
433
|
+
|
|
434
|
+
Price: $0.0035 per result.
|
|
435
|
+
|
|
436
|
+
Example:
|
|
437
|
+
res = client.amazon.search(limit=3, url="https://www.amazon.com/s?k=laptop")
|
|
438
|
+
"""
|
|
439
|
+
raw = await self._client._arun_raw( # pyright: ignore[reportPrivateUsage]
|
|
440
|
+
"amazon.search", dict(input), options
|
|
441
|
+
)
|
|
442
|
+
return RunResult[AmazonSearchData].model_validate(raw)
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Generated - do not edit. Regenerate with: pnpm generate
|
|
2
|
+
"""Generated namespace module for the appstore platform."""
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
from typing import TYPE_CHECKING
|
|
7
|
+
|
|
8
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
9
|
+
from typing_extensions import NotRequired, Required, TypedDict, Unpack
|
|
10
|
+
|
|
11
|
+
from ..types import RequestOptions, RunResult
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from .._async_client import AsyncAnyAPI
|
|
15
|
+
from .._client import AnyAPI
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class AppstoreReviewsInput(TypedDict, total=False):
|
|
19
|
+
"""Input for App Store Reviews."""
|
|
20
|
+
|
|
21
|
+
appId: Required[str]
|
|
22
|
+
"""Numeric App Store app ID, the digits at the end of the app's store URL without the 'id' prefix (e.g. 310633997)."""
|
|
23
|
+
country: NotRequired[str]
|
|
24
|
+
"""Two-letter App Store storefront country code to read reviews from. Default: us."""
|
|
25
|
+
limit: NotRequired[int]
|
|
26
|
+
"""Maximum number of results to return (1-100, default 100). You are billed per result returned, so a lower limit costs less. Range: 1 to 100."""
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class AppstoreReviewsData(BaseModel):
|
|
30
|
+
items: list[AppstoreReviewsItem] = Field(
|
|
31
|
+
description="Review records: star rating, review title and text, reviewer nickname, app version, and review date."
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class AppstoreReviewsItem(BaseModel):
|
|
36
|
+
model_config = ConfigDict(extra="allow")
|
|
37
|
+
|
|
38
|
+
rating: float
|
|
39
|
+
text: str
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class AppstoreNamespace:
|
|
43
|
+
"""Typed methods for this platform. Attached lazily to the client."""
|
|
44
|
+
|
|
45
|
+
def __init__(self, client: "AnyAPI") -> None:
|
|
46
|
+
self._client = client
|
|
47
|
+
|
|
48
|
+
def reviews(
|
|
49
|
+
self,
|
|
50
|
+
*,
|
|
51
|
+
options: RequestOptions | None = None,
|
|
52
|
+
**input: Unpack[AppstoreReviewsInput],
|
|
53
|
+
) -> RunResult[AppstoreReviewsData]:
|
|
54
|
+
"""App Store Reviews
|
|
55
|
+
|
|
56
|
+
Get App Store reviews for any iOS app by app ID, in any storefront country -
|
|
57
|
+
ratings, titles, and review text with transparent per-request USD pricing.
|
|
58
|
+
|
|
59
|
+
Price: $0.0001 per result.
|
|
60
|
+
|
|
61
|
+
Example:
|
|
62
|
+
res = client.appstore.reviews(appId="389801252", country="us", limit=3)
|
|
63
|
+
"""
|
|
64
|
+
raw = self._client._run_raw( # pyright: ignore[reportPrivateUsage]
|
|
65
|
+
"appstore.reviews", dict(input), options
|
|
66
|
+
)
|
|
67
|
+
return RunResult[AppstoreReviewsData].model_validate(raw)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class AsyncAppstoreNamespace:
|
|
71
|
+
"""Typed methods for this platform. Attached lazily to the client."""
|
|
72
|
+
|
|
73
|
+
def __init__(self, client: "AsyncAnyAPI") -> None:
|
|
74
|
+
self._client = client
|
|
75
|
+
|
|
76
|
+
async def reviews(
|
|
77
|
+
self,
|
|
78
|
+
*,
|
|
79
|
+
options: RequestOptions | None = None,
|
|
80
|
+
**input: Unpack[AppstoreReviewsInput],
|
|
81
|
+
) -> RunResult[AppstoreReviewsData]:
|
|
82
|
+
"""App Store Reviews
|
|
83
|
+
|
|
84
|
+
Get App Store reviews for any iOS app by app ID, in any storefront country -
|
|
85
|
+
ratings, titles, and review text with transparent per-request USD pricing.
|
|
86
|
+
|
|
87
|
+
Price: $0.0001 per result.
|
|
88
|
+
|
|
89
|
+
Example:
|
|
90
|
+
res = client.appstore.reviews(appId="389801252", country="us", limit=3)
|
|
91
|
+
"""
|
|
92
|
+
raw = await self._client._arun_raw( # pyright: ignore[reportPrivateUsage]
|
|
93
|
+
"appstore.reviews", dict(input), options
|
|
94
|
+
)
|
|
95
|
+
return RunResult[AppstoreReviewsData].model_validate(raw)
|