getanyapi 0.90.13__tar.gz → 0.91.0__tar.gz
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-0.90.13 → getanyapi-0.91.0}/PKG-INFO +1 -1
- {getanyapi-0.90.13 → getanyapi-0.91.0}/pyproject.toml +1 -1
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/__init__.py +1 -1
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/google.py +2 -2
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/youtube.py +20 -6
- {getanyapi-0.90.13 → getanyapi-0.91.0}/.gitignore +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/README.md +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/_account.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/_async_client.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/_client.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/_errors.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/_idempotency.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/_pagination.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/_transport.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/discovery_types.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/__init__.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/ahrefs.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/airbnb.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/alibaba.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/amazon.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/apollo.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/appstore.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/bluesky.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/booking.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/capterra.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/chatgpt.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/coinmarketcap.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/company.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/company_enrichment.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/company_identify.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/company_search.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/congress.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/contact_enrichment.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/douyin.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/ebay.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/email.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/email_finding.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/email_verification.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/facebook.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/fiverr.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/g2.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/gemini.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/github.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/glassdoor.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/google_ads.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/google_finance.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/google_hotels.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/google_shopping.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/hackernews.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/indeed.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/instagram.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/job_search.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/linkedin.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/maps.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/mobile_phone.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/naver.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/nextdoor.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/people_search.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/perplexity.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/person.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/person_enrichment.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/pexels.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/pinterest.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/playstore.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/polymarket.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/property_records.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/realtor.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/reddit.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/redfin.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/rednote.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/sec.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/semrush.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/seo.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/similarweb.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/snapchat.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/social.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/spotify.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/substack.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/technographics.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/threads.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/tiktok.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/tiktok_shop.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/tripadvisor.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/trustpilot.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/truthsocial.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/twitter.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/unsplash.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/upwork.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/walmart.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/web.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/weibo.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/yahoo_finance.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/yelp.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/zhihu.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/zillow.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/py.typed +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/types.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/conftest.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_account.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_client.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_durable_requests.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_envelope.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_errors.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_fixture_roundtrip.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_fixture_sweep.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_not_found_reason.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_pagination.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_transport.py +0 -0
- {getanyapi-0.90.13 → getanyapi-0.91.0}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: getanyapi
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.91.0
|
|
4
4
|
Summary: Official typed Python SDK for AnyAPI: any API, one wallet, USD, no subscriptions.
|
|
5
5
|
Project-URL: Homepage, https://getanyapi.com
|
|
6
6
|
Project-URL: Documentation, https://getanyapi.com/docs
|
|
@@ -852,7 +852,7 @@ class GoogleNamespace:
|
|
|
852
852
|
further, or use google.search_100 for up to 100 ranked results in one call,
|
|
853
853
|
which is cheaper past roughly 20 results.
|
|
854
854
|
|
|
855
|
-
Price: $0.
|
|
855
|
+
Price: $0.0005 per request.
|
|
856
856
|
|
|
857
857
|
Example:
|
|
858
858
|
res = client.google.search(gl="us", hl="en", limit=10, query="best coffee maker")
|
|
@@ -1141,7 +1141,7 @@ class AsyncGoogleNamespace:
|
|
|
1141
1141
|
further, or use google.search_100 for up to 100 ranked results in one call,
|
|
1142
1142
|
which is cheaper past roughly 20 results.
|
|
1143
1143
|
|
|
1144
|
-
Price: $0.
|
|
1144
|
+
Price: $0.0005 per request.
|
|
1145
1145
|
|
|
1146
1146
|
Example:
|
|
1147
1147
|
res = client.google.search(gl="us", hl="en", limit=10, query="best coffee maker")
|
|
@@ -27,14 +27,14 @@ class YoutubeChannelInput(TypedDict, total=False):
|
|
|
27
27
|
allowFallbacks: NotRequired[bool]
|
|
28
28
|
"""Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price. Default: true."""
|
|
29
29
|
channelId: NotRequired[str]
|
|
30
|
-
"""YouTube channel ID (UC...)."""
|
|
30
|
+
"""YouTube channel ID (UC...). Pass it directly when you have it: some sources accept only the ID and otherwise look up the handle first, which adds a step."""
|
|
31
31
|
handle: NotRequired[str]
|
|
32
32
|
"""YouTube channel handle."""
|
|
33
33
|
ignoreSources: NotRequired[list[str]]
|
|
34
34
|
"""Optional. Source ids to skip for this request, taken from this endpoint's `lanes[].source.id`. The cheapest remaining source serves and the price is that of the dearest remaining source. An id that does not serve this endpoint, or that is also in `source`, is rejected as invalid input with no charge; skipping every source is rejected the same way."""
|
|
35
35
|
preferLatencyUnderMs: NotRequired[int]
|
|
36
36
|
"""Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted. Minimum: 1."""
|
|
37
|
-
requireFields: NotRequired[list[Literal["views"]]]
|
|
37
|
+
requireFields: NotRequired[list[Literal["handle", "links", "videos", "views"]]]
|
|
38
38
|
"""Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `views`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a record that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge."""
|
|
39
39
|
source: NotRequired[list[str]]
|
|
40
40
|
"""Optional. Source ids to prefer, in order, taken from this endpoint's `lanes[].source.id` in /catalog or /apis. Omit it and the cheapest source serves, with automatic failover. Listed sources are tried first in the order given, then the others, unless `allowFallbacks` is false. A single source with `allowFallbacks` false is served only by that source at its price, quoted and charged exactly, with no failover. The price is that of the dearest source that may serve. An id that does not serve this endpoint is rejected as invalid input with no charge; a listed source that is not serving right now is refused with no charge, so omit `source` to be served by another. On a paginated walk, later pages must include the source that served page one, or omit `source`."""
|
|
@@ -413,6 +413,10 @@ class YoutubeChannelData(BaseModel):
|
|
|
413
413
|
handle: str | None = Field(
|
|
414
414
|
default=None, description='The channel\'s @handle, for example "@mkbhd".'
|
|
415
415
|
)
|
|
416
|
+
links: list[YoutubeChannelLink] | None = Field(
|
|
417
|
+
default=None,
|
|
418
|
+
description="The links the channel lists in the Links section of its About page, in the order shown. Empty when the channel lists none, and absent when the serving source does not report links; name `links` in requireFields to be served only by a source that does.",
|
|
419
|
+
)
|
|
416
420
|
subscribers: int
|
|
417
421
|
title: str = Field(
|
|
418
422
|
description="Populated whenever the provider has data for the entity."
|
|
@@ -427,6 +431,16 @@ class YoutubeChannelData(BaseModel):
|
|
|
427
431
|
)
|
|
428
432
|
|
|
429
433
|
|
|
434
|
+
class YoutubeChannelLink(BaseModel):
|
|
435
|
+
model_config = ConfigDict(extra="allow")
|
|
436
|
+
|
|
437
|
+
title: str | None = Field(
|
|
438
|
+
default=None,
|
|
439
|
+
description="The label the channel gave the link, when the serving source reports it.",
|
|
440
|
+
)
|
|
441
|
+
url: str = Field(description="The link's address, starting with https://.")
|
|
442
|
+
|
|
443
|
+
|
|
430
444
|
class YoutubeChannelCommunityPostsData(BaseModel):
|
|
431
445
|
model_config = ConfigDict(populate_by_name=True)
|
|
432
446
|
|
|
@@ -1326,7 +1340,7 @@ class YoutubeNamespace:
|
|
|
1326
1340
|
"""YouTube Channel
|
|
1327
1341
|
|
|
1328
1342
|
Fetch a YouTube channel's stats (subscribers, video count, total views,
|
|
1329
|
-
description) by handle or channel ID.
|
|
1343
|
+
description) and the links on its About page, by handle or channel ID.
|
|
1330
1344
|
|
|
1331
1345
|
Price: $0.0005 per request.
|
|
1332
1346
|
|
|
@@ -1831,7 +1845,7 @@ class YoutubeNamespace:
|
|
|
1831
1845
|
Fetch a YouTube video or Short's metadata (title, channel, views, likes,
|
|
1832
1846
|
duration, publish date) by URL or ID.
|
|
1833
1847
|
|
|
1834
|
-
Price: $0.
|
|
1848
|
+
Price: $0.0009 per request.
|
|
1835
1849
|
|
|
1836
1850
|
Example:
|
|
1837
1851
|
res = client.youtube.video(url="https://www.youtube.com/watch?v=dQw4w9WgXcQ")
|
|
@@ -1964,7 +1978,7 @@ class AsyncYoutubeNamespace:
|
|
|
1964
1978
|
"""YouTube Channel
|
|
1965
1979
|
|
|
1966
1980
|
Fetch a YouTube channel's stats (subscribers, video count, total views,
|
|
1967
|
-
description) by handle or channel ID.
|
|
1981
|
+
description) and the links on its About page, by handle or channel ID.
|
|
1968
1982
|
|
|
1969
1983
|
Price: $0.0005 per request.
|
|
1970
1984
|
|
|
@@ -2471,7 +2485,7 @@ class AsyncYoutubeNamespace:
|
|
|
2471
2485
|
Fetch a YouTube video or Short's metadata (title, channel, views, likes,
|
|
2472
2486
|
duration, publish date) by URL or ID.
|
|
2473
2487
|
|
|
2474
|
-
Price: $0.
|
|
2488
|
+
Price: $0.0009 per request.
|
|
2475
2489
|
|
|
2476
2490
|
Example:
|
|
2477
2491
|
res = client.youtube.video(url="https://www.youtube.com/watch?v=dQw4w9WgXcQ")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|