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.
Files changed (109) hide show
  1. {getanyapi-0.90.13 → getanyapi-0.91.0}/PKG-INFO +1 -1
  2. {getanyapi-0.90.13 → getanyapi-0.91.0}/pyproject.toml +1 -1
  3. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/__init__.py +1 -1
  4. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/google.py +2 -2
  5. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/youtube.py +20 -6
  6. {getanyapi-0.90.13 → getanyapi-0.91.0}/.gitignore +0 -0
  7. {getanyapi-0.90.13 → getanyapi-0.91.0}/README.md +0 -0
  8. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/_account.py +0 -0
  9. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/_async_client.py +0 -0
  10. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/_client.py +0 -0
  11. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/_errors.py +0 -0
  12. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/_idempotency.py +0 -0
  13. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/_pagination.py +0 -0
  14. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/_transport.py +0 -0
  15. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/discovery_types.py +0 -0
  16. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/__init__.py +0 -0
  17. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/ahrefs.py +0 -0
  18. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/airbnb.py +0 -0
  19. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/alibaba.py +0 -0
  20. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/amazon.py +0 -0
  21. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/apollo.py +0 -0
  22. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/appstore.py +0 -0
  23. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/bluesky.py +0 -0
  24. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/booking.py +0 -0
  25. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/capterra.py +0 -0
  26. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/chatgpt.py +0 -0
  27. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/coinmarketcap.py +0 -0
  28. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/company.py +0 -0
  29. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/company_enrichment.py +0 -0
  30. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/company_identify.py +0 -0
  31. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/company_search.py +0 -0
  32. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/congress.py +0 -0
  33. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/contact_enrichment.py +0 -0
  34. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/douyin.py +0 -0
  35. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/ebay.py +0 -0
  36. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/email.py +0 -0
  37. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/email_finding.py +0 -0
  38. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/email_verification.py +0 -0
  39. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/facebook.py +0 -0
  40. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/fiverr.py +0 -0
  41. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/g2.py +0 -0
  42. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/gemini.py +0 -0
  43. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/github.py +0 -0
  44. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/glassdoor.py +0 -0
  45. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/google_ads.py +0 -0
  46. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/google_finance.py +0 -0
  47. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/google_hotels.py +0 -0
  48. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/google_shopping.py +0 -0
  49. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/hackernews.py +0 -0
  50. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/indeed.py +0 -0
  51. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/instagram.py +0 -0
  52. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/job_search.py +0 -0
  53. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/linkedin.py +0 -0
  54. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/maps.py +0 -0
  55. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/mobile_phone.py +0 -0
  56. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/naver.py +0 -0
  57. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/nextdoor.py +0 -0
  58. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/people_search.py +0 -0
  59. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/perplexity.py +0 -0
  60. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/person.py +0 -0
  61. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/person_enrichment.py +0 -0
  62. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/pexels.py +0 -0
  63. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/pinterest.py +0 -0
  64. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/playstore.py +0 -0
  65. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/polymarket.py +0 -0
  66. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/property_records.py +0 -0
  67. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/realtor.py +0 -0
  68. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/reddit.py +0 -0
  69. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/redfin.py +0 -0
  70. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/rednote.py +0 -0
  71. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/sec.py +0 -0
  72. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/semrush.py +0 -0
  73. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/seo.py +0 -0
  74. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/similarweb.py +0 -0
  75. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/snapchat.py +0 -0
  76. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/social.py +0 -0
  77. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/spotify.py +0 -0
  78. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/substack.py +0 -0
  79. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/technographics.py +0 -0
  80. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/threads.py +0 -0
  81. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/tiktok.py +0 -0
  82. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/tiktok_shop.py +0 -0
  83. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/tripadvisor.py +0 -0
  84. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/trustpilot.py +0 -0
  85. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/truthsocial.py +0 -0
  86. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/twitter.py +0 -0
  87. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/unsplash.py +0 -0
  88. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/upwork.py +0 -0
  89. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/walmart.py +0 -0
  90. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/web.py +0 -0
  91. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/weibo.py +0 -0
  92. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/yahoo_finance.py +0 -0
  93. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/yelp.py +0 -0
  94. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/zhihu.py +0 -0
  95. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/platforms/zillow.py +0 -0
  96. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/py.typed +0 -0
  97. {getanyapi-0.90.13 → getanyapi-0.91.0}/src/getanyapi/types.py +0 -0
  98. {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/conftest.py +0 -0
  99. {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_account.py +0 -0
  100. {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_client.py +0 -0
  101. {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_durable_requests.py +0 -0
  102. {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_envelope.py +0 -0
  103. {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_errors.py +0 -0
  104. {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_fixture_roundtrip.py +0 -0
  105. {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_fixture_sweep.py +0 -0
  106. {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_not_found_reason.py +0 -0
  107. {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_pagination.py +0 -0
  108. {getanyapi-0.90.13 → getanyapi-0.91.0}/tests/test_transport.py +0 -0
  109. {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.90.13
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
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "getanyapi"
7
- version = "0.90.13"
7
+ version = "0.91.0"
8
8
  description = "Official typed Python SDK for AnyAPI: any API, one wallet, USD, no subscriptions."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -55,7 +55,7 @@ from .types import (
55
55
  unwrap,
56
56
  )
57
57
 
58
- __version__ = "0.90.13"
58
+ __version__ = "0.91.0"
59
59
 
60
60
  __all__ = [
61
61
  # clients + top-level functions
@@ -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.0004 per request.
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.0004 per request.
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.0012 per request.
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.0012 per request.
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