getanyapi 0.48.2__tar.gz → 0.49.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 (105) hide show
  1. {getanyapi-0.48.2 → getanyapi-0.49.0}/PKG-INFO +1 -1
  2. {getanyapi-0.48.2 → getanyapi-0.49.0}/pyproject.toml +1 -1
  3. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/__init__.py +1 -1
  4. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/douyin.py +8 -8
  5. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/github.py +1 -1
  6. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/google.py +5 -5
  7. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/linkedin.py +2 -2
  8. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/reddit.py +2 -2
  9. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/tiktok.py +17 -8
  10. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/trustpilot.py +1 -1
  11. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/youtube.py +1 -1
  12. {getanyapi-0.48.2 → getanyapi-0.49.0}/.gitignore +0 -0
  13. {getanyapi-0.48.2 → getanyapi-0.49.0}/README.md +0 -0
  14. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/_account.py +0 -0
  15. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/_async_client.py +0 -0
  16. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/_client.py +0 -0
  17. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/_errors.py +0 -0
  18. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/_idempotency.py +0 -0
  19. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/_pagination.py +0 -0
  20. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/_transport.py +0 -0
  21. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/discovery_types.py +0 -0
  22. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/__init__.py +0 -0
  23. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/ahrefs.py +0 -0
  24. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/airbnb.py +0 -0
  25. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/alibaba.py +0 -0
  26. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/amazon.py +0 -0
  27. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/apollo.py +0 -0
  28. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/appstore.py +0 -0
  29. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/bluesky.py +0 -0
  30. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/booking.py +0 -0
  31. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/capterra.py +0 -0
  32. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/chatgpt.py +0 -0
  33. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/coinmarketcap.py +0 -0
  34. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/company.py +0 -0
  35. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/company_enrichment.py +0 -0
  36. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/company_identify.py +0 -0
  37. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/company_search.py +0 -0
  38. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/congress.py +0 -0
  39. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/contact_enrichment.py +0 -0
  40. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/ebay.py +0 -0
  41. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/email.py +0 -0
  42. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/email_finding.py +0 -0
  43. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/email_verification.py +0 -0
  44. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/facebook.py +0 -0
  45. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/fiverr.py +0 -0
  46. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/g2.py +0 -0
  47. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/gemini.py +0 -0
  48. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/glassdoor.py +0 -0
  49. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/google_ads.py +0 -0
  50. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/google_finance.py +0 -0
  51. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/google_shopping.py +0 -0
  52. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/hackernews.py +0 -0
  53. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/indeed.py +0 -0
  54. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/instagram.py +0 -0
  55. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/job_search.py +0 -0
  56. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/maps.py +0 -0
  57. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/mobile_phone.py +0 -0
  58. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/naver.py +0 -0
  59. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/nextdoor.py +0 -0
  60. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/people_search.py +0 -0
  61. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/perplexity.py +0 -0
  62. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/person.py +0 -0
  63. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/person_enrichment.py +0 -0
  64. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/pinterest.py +0 -0
  65. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/playstore.py +0 -0
  66. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/polymarket.py +0 -0
  67. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/property_records.py +0 -0
  68. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/realtor.py +0 -0
  69. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/redfin.py +0 -0
  70. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/rednote.py +0 -0
  71. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/sec.py +0 -0
  72. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/semrush.py +0 -0
  73. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/seo.py +0 -0
  74. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/snapchat.py +0 -0
  75. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/social.py +0 -0
  76. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/spotify.py +0 -0
  77. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/substack.py +0 -0
  78. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/technographics.py +0 -0
  79. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/threads.py +0 -0
  80. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/tiktok_shop.py +0 -0
  81. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/tripadvisor.py +0 -0
  82. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/truthsocial.py +0 -0
  83. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/twitter.py +0 -0
  84. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/upwork.py +0 -0
  85. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/walmart.py +0 -0
  86. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/web.py +0 -0
  87. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/weibo.py +0 -0
  88. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/yahoo_finance.py +0 -0
  89. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/yelp.py +0 -0
  90. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/zhihu.py +0 -0
  91. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/platforms/zillow.py +0 -0
  92. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/py.typed +0 -0
  93. {getanyapi-0.48.2 → getanyapi-0.49.0}/src/getanyapi/types.py +0 -0
  94. {getanyapi-0.48.2 → getanyapi-0.49.0}/tests/conftest.py +0 -0
  95. {getanyapi-0.48.2 → getanyapi-0.49.0}/tests/test_account.py +0 -0
  96. {getanyapi-0.48.2 → getanyapi-0.49.0}/tests/test_client.py +0 -0
  97. {getanyapi-0.48.2 → getanyapi-0.49.0}/tests/test_durable_requests.py +0 -0
  98. {getanyapi-0.48.2 → getanyapi-0.49.0}/tests/test_envelope.py +0 -0
  99. {getanyapi-0.48.2 → getanyapi-0.49.0}/tests/test_errors.py +0 -0
  100. {getanyapi-0.48.2 → getanyapi-0.49.0}/tests/test_fixture_roundtrip.py +0 -0
  101. {getanyapi-0.48.2 → getanyapi-0.49.0}/tests/test_fixture_sweep.py +0 -0
  102. {getanyapi-0.48.2 → getanyapi-0.49.0}/tests/test_not_found_reason.py +0 -0
  103. {getanyapi-0.48.2 → getanyapi-0.49.0}/tests/test_pagination.py +0 -0
  104. {getanyapi-0.48.2 → getanyapi-0.49.0}/tests/test_transport.py +0 -0
  105. {getanyapi-0.48.2 → getanyapi-0.49.0}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: getanyapi
3
- Version: 0.48.2
3
+ Version: 0.49.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.48.2"
7
+ version = "0.49.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.48.2"
58
+ __version__ = "0.49.0"
59
59
 
60
60
  __all__ = [
61
61
  # clients + top-level functions
@@ -51,8 +51,8 @@ class DouyinSearchVideosInput(TypedDict, total=False):
51
51
  """Keyword to search for."""
52
52
  searchId: NotRequired[str]
53
53
  """Search ID returned by the previous page."""
54
- sort: NotRequired[Any]
55
- """Sort order. Use the canonical JSON integer 0 for comprehensive, 1 for most liked, or 2 for newest; legacy numeric strings remain accepted."""
54
+ sort: NotRequired[Literal["relevance", "most-liked", "date-posted"]]
55
+ """Sort order: relevance (Douyin's comprehensive ranking), most-liked, date-posted. Default: relevance."""
56
56
  source: NotRequired[list[str]]
57
57
  """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`."""
58
58
 
@@ -72,8 +72,8 @@ class DouyinUserPostsInput(TypedDict, total=False):
72
72
  """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."""
73
73
  secUserId: Required[str]
74
74
  """Douyin sec_user_id for the public account."""
75
- sort: NotRequired[Any]
76
- """Post order. Use the canonical JSON integer 0 for newest or 1 for most popular; legacy numeric strings remain accepted."""
75
+ sort: NotRequired[Literal["newest", "most-popular"]]
76
+ """Post order: newest, most-popular. Default: newest."""
77
77
  source: NotRequired[list[str]]
78
78
  """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`."""
79
79
 
@@ -480,7 +480,7 @@ class DouyinNamespace:
480
480
  Price: $0.012 per request.
481
481
 
482
482
  Example:
483
- res = client.douyin.search_videos(duration="0", publishedWithin=0, query="机器人", sort=0)
483
+ res = client.douyin.search_videos(duration="0", publishedWithin=0, query="机器人", sort="relevance")
484
484
  """
485
485
  raw = self._client._run_raw( # pyright: ignore[reportPrivateUsage]
486
486
  "douyin.search_videos", dict(input), options
@@ -501,7 +501,7 @@ class DouyinNamespace:
501
501
  Price: $0.0012 per request.
502
502
 
503
503
  Example:
504
- res = client.douyin.user_posts(limit=20, secUserId="MS4wLjABAAAANXSltcLCzDGmdNFI2Q_QixVTr67NiYzjKOIP5s03CAE", sort=0)
504
+ res = client.douyin.user_posts(limit=20, secUserId="MS4wLjABAAAANXSltcLCzDGmdNFI2Q_QixVTr67NiYzjKOIP5s03CAE", sort="newest")
505
505
  """
506
506
  raw = self._client._run_raw( # pyright: ignore[reportPrivateUsage]
507
507
  "douyin.user_posts", dict(input), options
@@ -591,7 +591,7 @@ class AsyncDouyinNamespace:
591
591
  Price: $0.012 per request.
592
592
 
593
593
  Example:
594
- res = client.douyin.search_videos(duration="0", publishedWithin=0, query="机器人", sort=0)
594
+ res = client.douyin.search_videos(duration="0", publishedWithin=0, query="机器人", sort="relevance")
595
595
  """
596
596
  raw = await self._client._arun_raw( # pyright: ignore[reportPrivateUsage]
597
597
  "douyin.search_videos", dict(input), options
@@ -612,7 +612,7 @@ class AsyncDouyinNamespace:
612
612
  Price: $0.0012 per request.
613
613
 
614
614
  Example:
615
- res = client.douyin.user_posts(limit=20, secUserId="MS4wLjABAAAANXSltcLCzDGmdNFI2Q_QixVTr67NiYzjKOIP5s03CAE", sort=0)
615
+ res = client.douyin.user_posts(limit=20, secUserId="MS4wLjABAAAANXSltcLCzDGmdNFI2Q_QixVTr67NiYzjKOIP5s03CAE", sort="newest")
616
616
  """
617
617
  raw = await self._client._arun_raw( # pyright: ignore[reportPrivateUsage]
618
618
  "douyin.user_posts", dict(input), options
@@ -47,7 +47,7 @@ class GithubTrendingDevelopersInput(TypedDict, total=False):
47
47
  """Programming language to filter trending developers (e.g. javascript, python, go)."""
48
48
  preferLatencyUnderMs: NotRequired[int]
49
49
  """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."""
50
- since: NotRequired[str]
50
+ since: NotRequired[Literal["daily", "weekly", "monthly"]]
51
51
  """Trending range: daily, weekly, or monthly (defaults to daily)."""
52
52
  source: NotRequired[list[str]]
53
53
  """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`."""
@@ -3,7 +3,7 @@
3
3
 
4
4
  from __future__ import annotations
5
5
 
6
- from typing import TYPE_CHECKING
6
+ from typing import Literal, TYPE_CHECKING
7
7
 
8
8
  from pydantic import BaseModel, ConfigDict, Field
9
9
  from typing_extensions import NotRequired, Required, TypedDict, Unpack
@@ -93,7 +93,7 @@ class GoogleImagesInput(TypedDict, total=False):
93
93
  """Image search query (e.g. golden gate bridge at sunset)."""
94
94
  source: NotRequired[list[str]]
95
95
  """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`."""
96
- timeframe: NotRequired[str]
96
+ timeframe: NotRequired[Literal["1h", "1d", "7d", "1y", "all"]]
97
97
  """Restrict results to a recent time window: 1h, 1d, 7d, 1y, or all. Default all (no time restriction)."""
98
98
 
99
99
 
@@ -194,7 +194,7 @@ class GoogleSearchInput(TypedDict, total=False):
194
194
  """Deprecated. Every source for this search returns a nextCursor, so this changes nothing about the price or which source serves you; it stays accepted so callers that already send it keep working."""
195
195
  source: NotRequired[list[str]]
196
196
  """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`."""
197
- timeframe: NotRequired[str]
197
+ timeframe: NotRequired[Literal["1h", "1d", "7d", "1y", "all"]]
198
198
  """Restrict results to a recent time window: 1h, 1d, 7d, 1y, or all. Default all (no time restriction)."""
199
199
 
200
200
 
@@ -217,7 +217,7 @@ class GoogleSearch100Input(TypedDict, total=False):
217
217
  """The Google search query."""
218
218
  source: NotRequired[list[str]]
219
219
  """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`."""
220
- timeframe: NotRequired[str]
220
+ timeframe: NotRequired[Literal["1h", "1d", "7d", "1y", "all"]]
221
221
  """Restrict results to a recent time window: 1h, 1d, 7d, 1y, or all. Default all (no time restriction)."""
222
222
 
223
223
 
@@ -242,7 +242,7 @@ class GoogleVideosInput(TypedDict, total=False):
242
242
  """The video search query."""
243
243
  source: NotRequired[list[str]]
244
244
  """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`."""
245
- timeframe: NotRequired[str]
245
+ timeframe: NotRequired[Literal["1h", "1d", "7d", "1y", "all"]]
246
246
  """Restrict results to a recent time window: 1h, 1d, 7d, 1y, or all. Default all (no time restriction)."""
247
247
 
248
248
 
@@ -4565,7 +4565,7 @@ class LinkedinNamespace:
4565
4565
 
4566
4566
  Search public LinkedIn posts by keyword (text, link, publish date).
4567
4567
 
4568
- Price: $0.0012 per request.
4568
+ Price: $0.018 per request.
4569
4569
 
4570
4570
  Example:
4571
4571
  res = client.linkedin.search_posts(datePosted="last-week", query="hiring")
@@ -5257,7 +5257,7 @@ class AsyncLinkedinNamespace:
5257
5257
 
5258
5258
  Search public LinkedIn posts by keyword (text, link, publish date).
5259
5259
 
5260
- Price: $0.0012 per request.
5260
+ Price: $0.018 per request.
5261
5261
 
5262
5262
  Example:
5263
5263
  res = client.linkedin.search_posts(datePosted="last-week", query="hiring")
@@ -227,13 +227,13 @@ class RedditSubredditSearchInput(TypedDict, total=False):
227
227
  ]
228
228
  ]
229
229
  """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 `isArchived` or `selftext`, 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 post that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. 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."""
230
- sort: NotRequired[str]
230
+ sort: NotRequired[Literal["relevance", "hot", "top", "new", "comments"]]
231
231
  """Optional sort order: relevance, hot, top, new, comments."""
232
232
  source: NotRequired[list[str]]
233
233
  """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`."""
234
234
  subreddit: Required[str]
235
235
  """Subreddit name without the r/ prefix (e.g. 'Fitness')."""
236
- timeframe: NotRequired[str]
236
+ timeframe: NotRequired[Literal["all", "year", "month", "week", "day", "hour"]]
237
237
  """Optional time filter: all, year, month, week, day, hour."""
238
238
 
239
239
 
@@ -403,8 +403,8 @@ class TiktokSearchKeywordInput(TypedDict, total=False):
403
403
  """The keyword to search TikTok for."""
404
404
  requireCursor: NotRequired[bool]
405
405
  """Deprecated. Every source for this search returns a nextCursor, so this changes nothing about the price or which source serves you; it stays accepted so callers that already send it keep working."""
406
- sortBy: NotRequired[Any]
407
- """Sort order. Use the canonical JSON integer 0 for relevance, 1 for most liked, or 2 for newest first; legacy numeric strings remain accepted."""
406
+ sortBy: NotRequired[Literal["relevance", "most-liked", "date-posted"]]
407
+ """Sort order: relevance, most-liked, date-posted. Default: relevance."""
408
408
  source: NotRequired[list[str]]
409
409
  """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`."""
410
410
 
@@ -454,13 +454,22 @@ class TiktokSearchTopInput(TypedDict, total=False):
454
454
  """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."""
455
455
  preferLatencyUnderMs: NotRequired[int]
456
456
  """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."""
457
- publishTime: NotRequired[str]
457
+ publishTime: NotRequired[
458
+ Literal[
459
+ "yesterday",
460
+ "this-week",
461
+ "this-month",
462
+ "last-3-months",
463
+ "last-6-months",
464
+ "all-time",
465
+ ]
466
+ ]
458
467
  """Time-frame filter: yesterday, this-week, this-month, last-3-months, last-6-months, all-time."""
459
468
  query: Required[str]
460
469
  """Keyword to search for (e.g. "funny")."""
461
470
  region: NotRequired[str]
462
471
  """2-letter country code for the proxy location (e.g. US, GB, FR)."""
463
- sortBy: NotRequired[str]
472
+ sortBy: NotRequired[Literal["relevance", "most-liked", "date-posted"]]
464
473
  """Sort order: relevance, most-liked, date-posted."""
465
474
  source: NotRequired[list[str]]
466
475
  """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`."""
@@ -3210,7 +3219,7 @@ class TiktokNamespace:
3210
3219
  Price: $0.0007 per request.
3211
3220
 
3212
3221
  Example:
3213
- res = client.tiktok.search_keyword(datePosted=0, query="cooking", sortBy=0)
3222
+ res = client.tiktok.search_keyword(datePosted=0, query="cooking", sortBy="relevance")
3214
3223
  """
3215
3224
  raw = self._client._run_raw( # pyright: ignore[reportPrivateUsage]
3216
3225
  "tiktok.search_keyword", dict(input), options
@@ -3317,7 +3326,7 @@ class TiktokNamespace:
3317
3326
  Search TikTok's top results for a keyword (caption, views, likes, comments,
3318
3327
  shares) with cursor pagination.
3319
3328
 
3320
- Price: $0.0012 per request.
3329
+ Price: $0.0009 per request.
3321
3330
 
3322
3331
  Example:
3323
3332
  res = client.tiktok.search_top(query="funny")
@@ -4298,7 +4307,7 @@ class AsyncTiktokNamespace:
4298
4307
  Price: $0.0007 per request.
4299
4308
 
4300
4309
  Example:
4301
- res = client.tiktok.search_keyword(datePosted=0, query="cooking", sortBy=0)
4310
+ res = client.tiktok.search_keyword(datePosted=0, query="cooking", sortBy="relevance")
4302
4311
  """
4303
4312
  raw = await self._client._arun_raw( # pyright: ignore[reportPrivateUsage]
4304
4313
  "tiktok.search_keyword", dict(input), options
@@ -4405,7 +4414,7 @@ class AsyncTiktokNamespace:
4405
4414
  Search TikTok's top results for a keyword (caption, views, likes, comments,
4406
4415
  shares) with cursor pagination.
4407
4416
 
4408
- Price: $0.0012 per request.
4417
+ Price: $0.0009 per request.
4409
4418
 
4410
4419
  Example:
4411
4420
  res = client.tiktok.search_top(query="funny")
@@ -46,7 +46,7 @@ class TrustpilotReviewsInput(TypedDict, total=False):
46
46
  ]
47
47
  ]
48
48
  """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 `avatarUrl`, 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 review that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge."""
49
- sortBy: NotRequired[str]
49
+ sortBy: NotRequired[Literal["auto", "relevancy", "recent"]]
50
50
  """Review ordering: auto, relevancy, or recent (e.g. recent). Default: auto."""
51
51
  source: NotRequired[list[str]]
52
52
  """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`."""
@@ -315,7 +315,7 @@ class YoutubeVideoCommentsInput(TypedDict, total=False):
315
315
  """Continuation token from a previous response for pagination."""
316
316
  ignoreSources: NotRequired[list[str]]
317
317
  """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."""
318
- order: NotRequired[str]
318
+ order: NotRequired[Literal["top", "newest"]]
319
319
  """Comment order (e.g. top, newest)."""
320
320
  preferLatencyUnderMs: NotRequired[int]
321
321
  """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."""
File without changes
File without changes
File without changes
File without changes