getanyapi 0.34.4__tar.gz → 0.35.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 (102) hide show
  1. {getanyapi-0.34.4 → getanyapi-0.35.0}/PKG-INFO +1 -1
  2. {getanyapi-0.34.4 → getanyapi-0.35.0}/pyproject.toml +1 -1
  3. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/__init__.py +1 -1
  4. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/amazon.py +3 -3
  5. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/ebay.py +1 -1
  6. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/email.py +21 -15
  7. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/google_shopping.py +1 -1
  8. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/instagram.py +3 -3
  9. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/linkedin.py +27 -27
  10. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/maps.py +10 -10
  11. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/pinterest.py +1 -1
  12. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/tiktok.py +3 -3
  13. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/tiktok_shop.py +1 -1
  14. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/tripadvisor.py +2 -2
  15. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/trustpilot.py +3 -3
  16. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/web.py +5 -7
  17. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/zillow.py +1 -1
  18. {getanyapi-0.34.4 → getanyapi-0.35.0}/.gitignore +0 -0
  19. {getanyapi-0.34.4 → getanyapi-0.35.0}/README.md +0 -0
  20. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/_account.py +0 -0
  21. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/_async_client.py +0 -0
  22. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/_client.py +0 -0
  23. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/_errors.py +0 -0
  24. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/_idempotency.py +0 -0
  25. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/_pagination.py +0 -0
  26. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/_transport.py +0 -0
  27. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/discovery_types.py +0 -0
  28. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/__init__.py +0 -0
  29. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/ahrefs.py +0 -0
  30. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/airbnb.py +0 -0
  31. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/alibaba.py +0 -0
  32. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/apollo.py +0 -0
  33. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/appstore.py +0 -0
  34. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/bluesky.py +0 -0
  35. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/booking.py +0 -0
  36. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/capterra.py +0 -0
  37. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/chatgpt.py +0 -0
  38. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/coinmarketcap.py +0 -0
  39. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/company.py +0 -0
  40. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/company_enrichment.py +0 -0
  41. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/company_search.py +0 -0
  42. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/congress.py +0 -0
  43. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/dexscreener.py +0 -0
  44. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/douyin.py +0 -0
  45. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/email_finding.py +0 -0
  46. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/email_verification.py +0 -0
  47. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/facebook.py +0 -0
  48. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/fiverr.py +0 -0
  49. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/g2.py +0 -0
  50. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/gemini.py +0 -0
  51. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/github.py +0 -0
  52. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/glassdoor.py +0 -0
  53. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/google.py +0 -0
  54. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/google_ads.py +0 -0
  55. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/google_finance.py +0 -0
  56. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/hackernews.py +0 -0
  57. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/indeed.py +0 -0
  58. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/job_search.py +0 -0
  59. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/mobile_phone.py +0 -0
  60. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/naver.py +0 -0
  61. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/pandaexpress.py +0 -0
  62. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/people_search.py +0 -0
  63. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/perplexity.py +0 -0
  64. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/person.py +0 -0
  65. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/person_enrichment.py +0 -0
  66. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/playstore.py +0 -0
  67. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/polymarket.py +0 -0
  68. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/realtor.py +0 -0
  69. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/reddit.py +0 -0
  70. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/redfin.py +0 -0
  71. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/rednote.py +0 -0
  72. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/sec.py +0 -0
  73. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/semrush.py +0 -0
  74. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/seo.py +0 -0
  75. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/snapchat.py +0 -0
  76. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/social.py +0 -0
  77. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/spotify.py +0 -0
  78. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/substack.py +0 -0
  79. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/technographics.py +0 -0
  80. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/threads.py +0 -0
  81. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/truthsocial.py +0 -0
  82. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/twitter.py +0 -0
  83. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/upwork.py +0 -0
  84. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/walmart.py +0 -0
  85. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/weibo.py +0 -0
  86. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/yahoo_finance.py +0 -0
  87. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/yelp.py +0 -0
  88. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/youtube.py +0 -0
  89. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/platforms/zhihu.py +0 -0
  90. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/py.typed +0 -0
  91. {getanyapi-0.34.4 → getanyapi-0.35.0}/src/getanyapi/types.py +0 -0
  92. {getanyapi-0.34.4 → getanyapi-0.35.0}/tests/conftest.py +0 -0
  93. {getanyapi-0.34.4 → getanyapi-0.35.0}/tests/test_account.py +0 -0
  94. {getanyapi-0.34.4 → getanyapi-0.35.0}/tests/test_client.py +0 -0
  95. {getanyapi-0.34.4 → getanyapi-0.35.0}/tests/test_durable_requests.py +0 -0
  96. {getanyapi-0.34.4 → getanyapi-0.35.0}/tests/test_envelope.py +0 -0
  97. {getanyapi-0.34.4 → getanyapi-0.35.0}/tests/test_errors.py +0 -0
  98. {getanyapi-0.34.4 → getanyapi-0.35.0}/tests/test_fixture_roundtrip.py +0 -0
  99. {getanyapi-0.34.4 → getanyapi-0.35.0}/tests/test_fixture_sweep.py +0 -0
  100. {getanyapi-0.34.4 → getanyapi-0.35.0}/tests/test_pagination.py +0 -0
  101. {getanyapi-0.34.4 → getanyapi-0.35.0}/tests/test_transport.py +0 -0
  102. {getanyapi-0.34.4 → getanyapi-0.35.0}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: getanyapi
3
- Version: 0.34.4
3
+ Version: 0.35.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.34.4"
7
+ version = "0.35.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"
@@ -54,7 +54,7 @@ from .types import (
54
54
  unwrap,
55
55
  )
56
56
 
57
- __version__ = "0.34.4"
57
+ __version__ = "0.35.0"
58
58
 
59
59
  __all__ = [
60
60
  # clients + top-level functions
@@ -32,7 +32,7 @@ class AmazonBestsellersInput(TypedDict, total=False):
32
32
  """Input for Amazon Bestsellers."""
33
33
 
34
34
  limit: NotRequired[int]
35
- """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. Default: 20."""
35
+ """Maximum number of results to return (1-20, default 20). Range: 1 to 20. Default: 20."""
36
36
  preferLatencyUnderMs: NotRequired[int]
37
37
  """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."""
38
38
  url: Required[str]
@@ -56,7 +56,7 @@ class AmazonReviewsInput(TypedDict, total=False):
56
56
  keyword: NotRequired[str]
57
57
  """Only return reviews whose title or text contains this keyword, case-insensitively (e.g. battery)."""
58
58
  limit: NotRequired[int]
59
- """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. Default: 50."""
59
+ """Maximum number of results to return (1-50, default 50). Range: 1 to 50. Default: 50."""
60
60
  preferLatencyUnderMs: NotRequired[int]
61
61
  """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."""
62
62
  product: Required[str]
@@ -102,7 +102,7 @@ class AmazonSearchInput(TypedDict, total=False):
102
102
  """Input for Amazon Search."""
103
103
 
104
104
  limit: NotRequired[int]
105
- """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. Default: 20."""
105
+ """Maximum number of results to return (1-20, default 20). Range: 1 to 20. Default: 20."""
106
106
  preferLatencyUnderMs: NotRequired[int]
107
107
  """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."""
108
108
  url: Required[str]
@@ -41,7 +41,7 @@ class EbaySearchInput(TypedDict, total=False):
41
41
  ]
42
42
  """Filter by one or more item conditions; omit for all conditions (e.g. ["new", "open_box"])."""
43
43
  limit: NotRequired[int]
44
- """Maximum number of results to return (1 to 25, default 25). You are billed per result returned, so a lower limit costs less. Range: 1 to 25."""
44
+ """Maximum number of results to return (1 to 25, default 25). Range: 1 to 25."""
45
45
  listingType: NotRequired[Literal["all", "auction", "buy_it_now"]]
46
46
  """Restrict to a listing format; omit or use all for both (e.g. buy_it_now for fixed-price only)."""
47
47
  maxPrice: NotRequired[int]
@@ -68,13 +68,19 @@ class EmailVerifyItem(BaseModel):
68
68
  description="Populated whenever the provider has data for the entity."
69
69
  )
70
70
  free: bool | None = Field(default=None, description="Free email provider.")
71
- reason: str | None = None
71
+ reason: str | None = Field(
72
+ default=None,
73
+ description="Why the verdict was reached. Published by only one of the two sources, so it is absent on most calls; never treat it as required.",
74
+ )
72
75
  role: bool | None = Field(
73
76
  default=None, description="Role-based address (e.g. info@)."
74
77
  )
75
- score: int | None = Field(default=None, description="Confidence score (0-100).")
78
+ score: int | None = Field(
79
+ default=None,
80
+ description="Confidence in the verdict, 0-100. Coarse rather than graded on most calls: it tracks the status rather than ranking addresses within one.",
81
+ )
76
82
  status: str = Field(
77
- description="Deliverability verdict (e.g. valid, risky, invalid). Populated whenever the provider has data for the entity."
83
+ description="Deliverability verdict: good (the mailbox accepted), bad (it was refused), or risky (no source could settle it - usually a catch-all domain that accepts every address, sometimes a receiving server that declined to answer at all). Populated whenever the provider has data for the entity."
78
84
  )
79
85
 
80
86
 
@@ -109,13 +115,13 @@ class EmailNamespace:
109
115
  ) -> RunResult[EmailVerifyData]:
110
116
  """Email Verifier
111
117
 
112
- Verify an email address for deliverability: a status verdict (valid, risky,
113
- or invalid) with domain, mailbox, catch-all, disposable, and role signals
114
- plus a confidence score. Malformed addresses are rejected by the input
115
- schema with no charge; every syntactically valid address returns a billed
116
- verdict, including undeliverable ones.
118
+ Verify an email address for deliverability: a status verdict (good, risky,
119
+ or bad) with domain, mailbox, catch-all, disposable, and role signals plus a
120
+ confidence score. Malformed addresses are rejected by the input schema with
121
+ no charge; every syntactically valid address returns a billed verdict,
122
+ including undeliverable ones.
117
123
 
118
- Price: $0 per request plus $0.00088 per result (maximum $0.00088).
124
+ Price: $0.0066 per request.
119
125
 
120
126
  Example:
121
127
  res = client.email.verify(email="patrick@stripe.com")
@@ -157,13 +163,13 @@ class AsyncEmailNamespace:
157
163
  ) -> RunResult[EmailVerifyData]:
158
164
  """Email Verifier
159
165
 
160
- Verify an email address for deliverability: a status verdict (valid, risky,
161
- or invalid) with domain, mailbox, catch-all, disposable, and role signals
162
- plus a confidence score. Malformed addresses are rejected by the input
163
- schema with no charge; every syntactically valid address returns a billed
164
- verdict, including undeliverable ones.
166
+ Verify an email address for deliverability: a status verdict (good, risky,
167
+ or bad) with domain, mailbox, catch-all, disposable, and role signals plus a
168
+ confidence score. Malformed addresses are rejected by the input schema with
169
+ no charge; every syntactically valid address returns a billed verdict,
170
+ including undeliverable ones.
165
171
 
166
- Price: $0 per request plus $0.00088 per result (maximum $0.00088).
172
+ Price: $0.0066 per request.
167
173
 
168
174
  Example:
169
175
  res = client.email.verify(email="patrick@stripe.com")
@@ -25,7 +25,7 @@ class GoogleShoppingSearchInput(TypedDict, total=False):
25
25
  language: NotRequired[str]
26
26
  """ISO 639-1 language code for results (e.g. "en", "es", "fr"). Default: en."""
27
27
  limit: NotRequired[int]
28
- """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."""
28
+ """Maximum number of results to return (1-10, default 10). Range: 1 to 10."""
29
29
  preferLatencyUnderMs: NotRequired[int]
30
30
  """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."""
31
31
  query: Required[str]
@@ -218,7 +218,7 @@ class InstagramSearchInput(TypedDict, total=False):
218
218
  """Input for Instagram Search."""
219
219
 
220
220
  limit: NotRequired[int]
221
- """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."""
221
+ """Maximum number of results to return (1-20, default 20). Range: 1 to 20."""
222
222
  preferLatencyUnderMs: NotRequired[int]
223
223
  """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."""
224
224
  query: Required[str]
@@ -2028,7 +2028,7 @@ class InstagramNamespace:
2028
2028
  Search Instagram for users, hashtags, or places by keyword and get matching
2029
2029
  results with names, counts, and links.
2030
2030
 
2031
- Price: $0.0015 per request.
2031
+ Price: $0.0036 per request.
2032
2032
 
2033
2033
  Example:
2034
2034
  res = client.instagram.search(query="nasa")
@@ -2893,7 +2893,7 @@ class AsyncInstagramNamespace:
2893
2893
  Search Instagram for users, hashtags, or places by keyword and get matching
2894
2894
  results with names, counts, and links.
2895
2895
 
2896
- Price: $0.0015 per request.
2896
+ Price: $0.0036 per request.
2897
2897
 
2898
2898
  Example:
2899
2899
  res = client.instagram.search(query="nasa")
@@ -226,7 +226,7 @@ class LinkedinPostCommentsInput(TypedDict, total=False):
226
226
  """Input for LinkedIn Post Comments."""
227
227
 
228
228
  limit: NotRequired[int]
229
- """Maximum number of comments to return. You are billed per comment returned, so a lower limit costs less. Range: 1 to 100. Default: 100."""
229
+ """Maximum number of comments to return. Range: 1 to 100. Default: 100."""
230
230
  postedLimit: NotRequired[
231
231
  Literal["any", "24h", "week", "month", "3months", "6months", "year"]
232
232
  ]
@@ -241,7 +241,7 @@ class LinkedinPostReactionsInput(TypedDict, total=False):
241
241
  """Input for LinkedIn Post Reactions."""
242
242
 
243
243
  limit: NotRequired[int]
244
- """Maximum number of reactions to return (1-100, default 100). You are billed per reaction returned, so a lower limit costs less. Range: 1 to 100."""
244
+ """Maximum number of reactions to return (1-100, default 100). Range: 1 to 100."""
245
245
  preferLatencyUnderMs: NotRequired[int]
246
246
  """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."""
247
247
  url: Required[str]
@@ -276,7 +276,7 @@ class LinkedinProfilePostsFullInput(TypedDict, total=False):
276
276
  includeReposts: NotRequired[bool]
277
277
  """Whether to include reposts that share content without added commentary. Default: true."""
278
278
  limit: NotRequired[int]
279
- """Maximum number of posts to return (1-100, default 10). You are billed per post returned, so a lower limit costs less. Range: 1 to 100. Default: 10."""
279
+ """Maximum number of posts to return (1-100, default 10). Range: 1 to 100. Default: 10."""
280
280
  postedLimit: NotRequired[
281
281
  Literal["any", "1h", "24h", "week", "month", "3months", "6months", "year"]
282
282
  ]
@@ -293,7 +293,7 @@ class LinkedinProfilePostsThinInput(TypedDict, total=False):
293
293
  """Input for LinkedIn Profile Posts (basic)."""
294
294
 
295
295
  limit: NotRequired[int]
296
- """Maximum number of posts to return (10-100, default 10). You are billed per post returned, so a lower limit costs less. Range: 10 to 100. Default: 10."""
296
+ """Maximum number of posts to return (10-100, default 10). Range: 10 to 100. Default: 10."""
297
297
  preferLatencyUnderMs: NotRequired[int]
298
298
  """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."""
299
299
  url: Required[str]
@@ -313,7 +313,7 @@ class LinkedinSearchCompaniesInput(TypedDict, total=False):
313
313
  """Input for LinkedIn Company Search."""
314
314
 
315
315
  limit: NotRequired[int]
316
- """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."""
316
+ """Maximum number of results to return (1-20, default 20). Range: 1 to 20. Default: 20."""
317
317
  location: NotRequired[str]
318
318
  """Optional location filter, written out in full (e.g. United Kingdom or San Francisco)."""
319
319
  preferLatencyUnderMs: NotRequired[int]
@@ -375,7 +375,7 @@ class LinkedinSearchPostsFullInput(TypedDict, total=False):
375
375
  ]
376
376
  """Only return posts published within this relative time window. Last-hour and windows beyond one month route to the provider that supports them. Default: last-day."""
377
377
  limit: NotRequired[int]
378
- """Maximum number of posts to return (1-100, default 10). The upper bound is one LinkedIn search page. You are billed per post returned. Range: 1 to 100. Default: 10."""
378
+ """Maximum number of posts to return (1-100, default 10). The upper bound is one LinkedIn search page. Range: 1 to 100. Default: 10."""
379
379
  mentioningMemberUrls: NotRequired[list[str]]
380
380
  """Only return posts mentioning these LinkedIn member profile URLs."""
381
381
  preferLatencyUnderMs: NotRequired[int]
@@ -1913,7 +1913,7 @@ class LinkedinProfilePostsFullItem(BaseModel):
1913
1913
  type_: str | None = Field(
1914
1914
  default=None,
1915
1915
  alias="type",
1916
- description="LinkedIn record type reported for the post. Populated whenever the provider has data for the entity. Present whenever the upstream returns this record.",
1916
+ description="LinkedIn record type reported for the post.",
1917
1917
  )
1918
1918
  url: str = Field(
1919
1919
  description="Canonical LinkedIn URL of the post. Populated whenever the provider has data for the entity."
@@ -2985,7 +2985,7 @@ class LinkedinNamespace:
2985
2985
  link, publish date, author, engagement counts with a per-reaction breakdown,
2986
2986
  and attached media.
2987
2987
 
2988
- Price: $0.00116 per request plus $0.00193 per result (maximum $0.0975).
2988
+ Price: $0.005 per request.
2989
2989
 
2990
2990
  Example:
2991
2991
  res = client.linkedin.company_posts(limit=10, url="https://www.linkedin.com/company/stripe")
@@ -3093,7 +3093,7 @@ class LinkedinNamespace:
3093
3093
  Cheap job index: title, company, location, posted date, URL. No description,
3094
3094
  salary, applicant counts, or seniority - for those use linkedin.jobs.
3095
3095
 
3096
- Price: $0.0009 per request.
3096
+ Price: $0.00066 per request.
3097
3097
 
3098
3098
  Example:
3099
3099
  res = client.linkedin.jobs_thin(limit=3, location="United States", query="software engineer", workplaceType="remote")
@@ -3135,7 +3135,7 @@ class LinkedinNamespace:
3135
3135
  List comments on a LinkedIn post - full text, commenter name/URL/job title,
3136
3136
  timestamps, and engagement.
3137
3137
 
3138
- Price: $0 per request plus $0.00143 per result (maximum $0.143).
3138
+ Price: $0.005 per request.
3139
3139
 
3140
3140
  Example:
3141
3141
  res = client.linkedin.post_comments(limit=10, url="https://www.linkedin.com/posts/stripe_philip-kl%C3%B6ckner-in-conversation-with-conor-activity-7477791740645564416-tIbZ")
@@ -3156,7 +3156,7 @@ class LinkedinNamespace:
3156
3156
  List who reacted to a LinkedIn post - reactor name, profile URL, job title,
3157
3157
  and reaction type. Lead-gen grade.
3158
3158
 
3159
- Price: $0 per request plus $0.0022 per result (maximum $0.22).
3159
+ Price: $0.005 per request.
3160
3160
 
3161
3161
  Example:
3162
3162
  res = client.linkedin.post_reactions(limit=5, url="https://www.linkedin.com/posts/satyanadella_today-were-bringing-skills-to-copilot-for-activity-7475945433668694017--kvG")
@@ -3201,10 +3201,10 @@ class LinkedinNamespace:
3201
3201
  awards, languages, projects, publications, and verified/premium/open-to-work
3202
3202
  flags.
3203
3203
 
3204
- Price: $0.0044 per request plus $0 per result (maximum $0.0044).
3204
+ Price: $0.004 per request.
3205
3205
 
3206
3206
  Example:
3207
- res = client.linkedin.profile(url="https://www.linkedin.com/in/williamhgates")
3207
+ res = client.linkedin.profile(url="https://www.linkedin.com/in/patrickcollison")
3208
3208
  """
3209
3209
  raw = self._client._run_raw( # pyright: ignore[reportPrivateUsage]
3210
3210
  "linkedin.profile", dict(input), options
@@ -3222,7 +3222,7 @@ class LinkedinNamespace:
3222
3222
  Fetch recent public LinkedIn profile posts with enriched author, engagement,
3223
3223
  article, newsletter, media, annotation, repost, and social activity details.
3224
3224
 
3225
- Price: $0.00116 per request plus $0.00193 per result (maximum $0.194).
3225
+ Price: $0.005 per request.
3226
3226
 
3227
3227
  Example:
3228
3228
  res = client.linkedin.profile_posts_full(limit=10, url="https://www.linkedin.com/in/williamhgates/")
@@ -3243,7 +3243,7 @@ class LinkedinNamespace:
3243
3243
  Fetch recent public LinkedIn profile posts with portable identity, author,
3244
3244
  engagement, article, image, video, and repost fields.
3245
3245
 
3246
- Price: $0 per request plus $0.00143 per result (maximum $0.143).
3246
+ Price: $0.005 per request.
3247
3247
 
3248
3248
  Example:
3249
3249
  res = client.linkedin.profile_posts_thin(limit=10, url="https://www.linkedin.com/in/williamhgates/")
@@ -3288,7 +3288,7 @@ class LinkedinNamespace:
3288
3288
  Search LinkedIn companies by keyword with optional location filtering,
3289
3289
  returning normalized company records.
3290
3290
 
3291
- Price: $0.0011 per request plus $0.0044 per result (maximum $0.0891).
3291
+ Price: $0.005 per request.
3292
3292
 
3293
3293
  Example:
3294
3294
  res = client.linkedin.search_companies(limit=3, query="fintech")
@@ -3352,7 +3352,7 @@ class LinkedinNamespace:
3352
3352
  Search public LinkedIn posts with rich author, engagement, attachment, and
3353
3353
  poll details.
3354
3354
 
3355
- Price: $0 per request plus $0.00143 per result (maximum $0.143).
3355
+ Price: $0.005 per request.
3356
3356
 
3357
3357
  Example:
3358
3358
  res = client.linkedin.search_posts_full(datePosted="last-week", limit=10, query="artificial intelligence", sort="relevance")
@@ -3587,7 +3587,7 @@ class AsyncLinkedinNamespace:
3587
3587
  link, publish date, author, engagement counts with a per-reaction breakdown,
3588
3588
  and attached media.
3589
3589
 
3590
- Price: $0.00116 per request plus $0.00193 per result (maximum $0.0975).
3590
+ Price: $0.005 per request.
3591
3591
 
3592
3592
  Example:
3593
3593
  res = client.linkedin.company_posts(limit=10, url="https://www.linkedin.com/company/stripe")
@@ -3695,7 +3695,7 @@ class AsyncLinkedinNamespace:
3695
3695
  Cheap job index: title, company, location, posted date, URL. No description,
3696
3696
  salary, applicant counts, or seniority - for those use linkedin.jobs.
3697
3697
 
3698
- Price: $0.0009 per request.
3698
+ Price: $0.00066 per request.
3699
3699
 
3700
3700
  Example:
3701
3701
  res = client.linkedin.jobs_thin(limit=3, location="United States", query="software engineer", workplaceType="remote")
@@ -3737,7 +3737,7 @@ class AsyncLinkedinNamespace:
3737
3737
  List comments on a LinkedIn post - full text, commenter name/URL/job title,
3738
3738
  timestamps, and engagement.
3739
3739
 
3740
- Price: $0 per request plus $0.00143 per result (maximum $0.143).
3740
+ Price: $0.005 per request.
3741
3741
 
3742
3742
  Example:
3743
3743
  res = client.linkedin.post_comments(limit=10, url="https://www.linkedin.com/posts/stripe_philip-kl%C3%B6ckner-in-conversation-with-conor-activity-7477791740645564416-tIbZ")
@@ -3758,7 +3758,7 @@ class AsyncLinkedinNamespace:
3758
3758
  List who reacted to a LinkedIn post - reactor name, profile URL, job title,
3759
3759
  and reaction type. Lead-gen grade.
3760
3760
 
3761
- Price: $0 per request plus $0.0022 per result (maximum $0.22).
3761
+ Price: $0.005 per request.
3762
3762
 
3763
3763
  Example:
3764
3764
  res = client.linkedin.post_reactions(limit=5, url="https://www.linkedin.com/posts/satyanadella_today-were-bringing-skills-to-copilot-for-activity-7475945433668694017--kvG")
@@ -3803,10 +3803,10 @@ class AsyncLinkedinNamespace:
3803
3803
  awards, languages, projects, publications, and verified/premium/open-to-work
3804
3804
  flags.
3805
3805
 
3806
- Price: $0.0044 per request plus $0 per result (maximum $0.0044).
3806
+ Price: $0.004 per request.
3807
3807
 
3808
3808
  Example:
3809
- res = client.linkedin.profile(url="https://www.linkedin.com/in/williamhgates")
3809
+ res = client.linkedin.profile(url="https://www.linkedin.com/in/patrickcollison")
3810
3810
  """
3811
3811
  raw = await self._client._arun_raw( # pyright: ignore[reportPrivateUsage]
3812
3812
  "linkedin.profile", dict(input), options
@@ -3824,7 +3824,7 @@ class AsyncLinkedinNamespace:
3824
3824
  Fetch recent public LinkedIn profile posts with enriched author, engagement,
3825
3825
  article, newsletter, media, annotation, repost, and social activity details.
3826
3826
 
3827
- Price: $0.00116 per request plus $0.00193 per result (maximum $0.194).
3827
+ Price: $0.005 per request.
3828
3828
 
3829
3829
  Example:
3830
3830
  res = client.linkedin.profile_posts_full(limit=10, url="https://www.linkedin.com/in/williamhgates/")
@@ -3845,7 +3845,7 @@ class AsyncLinkedinNamespace:
3845
3845
  Fetch recent public LinkedIn profile posts with portable identity, author,
3846
3846
  engagement, article, image, video, and repost fields.
3847
3847
 
3848
- Price: $0 per request plus $0.00143 per result (maximum $0.143).
3848
+ Price: $0.005 per request.
3849
3849
 
3850
3850
  Example:
3851
3851
  res = client.linkedin.profile_posts_thin(limit=10, url="https://www.linkedin.com/in/williamhgates/")
@@ -3890,7 +3890,7 @@ class AsyncLinkedinNamespace:
3890
3890
  Search LinkedIn companies by keyword with optional location filtering,
3891
3891
  returning normalized company records.
3892
3892
 
3893
- Price: $0.0011 per request plus $0.0044 per result (maximum $0.0891).
3893
+ Price: $0.005 per request.
3894
3894
 
3895
3895
  Example:
3896
3896
  res = client.linkedin.search_companies(limit=3, query="fintech")
@@ -3954,7 +3954,7 @@ class AsyncLinkedinNamespace:
3954
3954
  Search public LinkedIn posts with rich author, engagement, attachment, and
3955
3955
  poll details.
3956
3956
 
3957
- Price: $0 per request plus $0.00143 per result (maximum $0.143).
3957
+ Price: $0.005 per request.
3958
3958
 
3959
3959
  Example:
3960
3960
  res = client.linkedin.search_posts_full(datePosted="last-week", limit=10, query="artificial intelligence", sort="relevance")
@@ -42,7 +42,7 @@ class MapsPlaceInput(TypedDict, total=False):
42
42
  """Input for Google Maps Place Lookup."""
43
43
 
44
44
  categoryFilterWords: NotRequired[list[str]]
45
- """Optional list of Google Maps place-category names to keep; the match is limited to a place whose category is one of these. Use lowercase category names as shown on Google Maps (e.g. ["coffee shop"]). Omit to allow any category."""
45
+ """Optional list of Google Maps place-category names to keep; the match is limited to a place whose category is one of these. Use lowercase category names as shown on Google Maps (e.g. ["coffee shop"]). Omit to allow any category and stay on the cheapest price; a category filter routes to a dearer source."""
46
46
  language: NotRequired[str]
47
47
  """Two-letter language code for the result details (e.g. en). Default: en."""
48
48
  location: NotRequired[str]
@@ -50,13 +50,13 @@ class MapsPlaceInput(TypedDict, total=False):
50
50
  placeMinimumStars: NotRequired[
51
51
  Literal["two", "twoAndHalf", "three", "threeAndHalf", "four", "fourAndHalf"]
52
52
  ]
53
- """Only match a place with at least this average rating: two (2+), twoAndHalf (2.5+), three (3+), threeAndHalf (3.5+), four (4+), or fourAndHalf (4.5+). Places with no reviews are excluded. Omit for no rating filter."""
53
+ """Only match a place with at least this average rating: two (2+), twoAndHalf (2.5+), three (3+), threeAndHalf (3.5+), four (4+), or fourAndHalf (4.5+). Places with no reviews are excluded. Omit this field to stay on the cheapest price; a rating floor routes to a dearer source."""
54
54
  preferLatencyUnderMs: NotRequired[int]
55
55
  """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."""
56
56
  query: Required[str]
57
57
  """The business name or search text to look up, as you would type it into the Google Maps search bar (e.g. Blue Bottle Coffee)."""
58
58
  website: NotRequired[Literal["allPlaces", "withWebsite", "withoutWebsite"]]
59
- """Filter by whether the place lists a website: allPlaces (default), withWebsite (only if it has a website), or withoutWebsite (only if it has none)."""
59
+ """Filter by whether the place lists a website: allPlaces (default), withWebsite (only if it has a website), or withoutWebsite (only if it has none). Omit this field, or send allPlaces, to stay on the cheapest price; withWebsite and withoutWebsite route to a dearer source."""
60
60
 
61
61
 
62
62
  class MapsReviewsInput(TypedDict, total=False):
@@ -84,7 +84,7 @@ class MapsSearchInput(TypedDict, total=False):
84
84
  """Input for Google Maps Search."""
85
85
 
86
86
  categoryFilterWords: NotRequired[list[str]]
87
- """Optional list of Google Maps place-category names to keep; results are limited to places whose category matches one of these. Use lowercase category names as shown on Google Maps (e.g. ["coffee shop", "restaurant"]). Omit to include all categories."""
87
+ """Optional list of Google Maps place-category names to keep; results are limited to places whose category matches one of these. Use lowercase category names as shown on Google Maps (e.g. ["coffee shop", "restaurant"]). Omit to include all categories and stay on the cheapest price; a category filter routes to a dearer source."""
88
88
  language: NotRequired[str]
89
89
  """Two-letter language code for the results (e.g. en). Default: en."""
90
90
  limit: NotRequired[int]
@@ -94,13 +94,13 @@ class MapsSearchInput(TypedDict, total=False):
94
94
  placeMinimumStars: NotRequired[
95
95
  Literal["two", "twoAndHalf", "three", "threeAndHalf", "four", "fourAndHalf"]
96
96
  ]
97
- """Only return places with at least this average rating: two (2+), twoAndHalf (2.5+), three (3+), threeAndHalf (3.5+), four (4+), or fourAndHalf (4.5+). Places with no reviews are excluded. Omit for no rating filter."""
97
+ """Only return places with at least this average rating: two (2+), twoAndHalf (2.5+), three (3+), threeAndHalf (3.5+), four (4+), or fourAndHalf (4.5+). Places with no reviews are excluded. Omit this field to stay on the cheapest price; a rating floor routes to a dearer source."""
98
98
  preferLatencyUnderMs: NotRequired[int]
99
99
  """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."""
100
100
  query: Required[str]
101
101
  """What you would type in the Google Maps search bar (e.g. coffee shop)."""
102
102
  website: NotRequired[Literal["allPlaces", "withWebsite", "withoutWebsite"]]
103
- """Filter places by whether they list a website: allPlaces (default), withWebsite (only places that have a website), or withoutWebsite (only places without one)."""
103
+ """Filter places by whether they list a website: allPlaces (default), withWebsite (only places that have a website), or withoutWebsite (only places without one). Omit this field, or send allPlaces, to stay on the cheapest price; withWebsite and withoutWebsite route to a dearer source."""
104
104
 
105
105
 
106
106
  class MapsContactsData(BaseModel):
@@ -450,7 +450,7 @@ class MapsNamespace:
450
450
  Price: $0.00175 per request.
451
451
 
452
452
  Example:
453
- res = client.maps.place(location="San Francisco, CA", query="Blue Bottle Coffee", website="withWebsite")
453
+ res = client.maps.place(location="San Francisco, CA", query="Blue Bottle Coffee")
454
454
  """
455
455
  raw = self._client._run_raw( # pyright: ignore[reportPrivateUsage]
456
456
  "maps.place", dict(input), options
@@ -490,7 +490,7 @@ class MapsNamespace:
490
490
  Price: $0.00175 per request.
491
491
 
492
492
  Example:
493
- res = client.maps.search(limit=3, location="Austin, TX", placeMinimumStars="four", query="coffee", website="withWebsite")
493
+ res = client.maps.search(limit=3, location="Austin, TX", query="coffee")
494
494
  """
495
495
  raw = self._client._run_raw( # pyright: ignore[reportPrivateUsage]
496
496
  "maps.search", dict(input), options
@@ -538,7 +538,7 @@ class AsyncMapsNamespace:
538
538
  Price: $0.00175 per request.
539
539
 
540
540
  Example:
541
- res = client.maps.place(location="San Francisco, CA", query="Blue Bottle Coffee", website="withWebsite")
541
+ res = client.maps.place(location="San Francisco, CA", query="Blue Bottle Coffee")
542
542
  """
543
543
  raw = await self._client._arun_raw( # pyright: ignore[reportPrivateUsage]
544
544
  "maps.place", dict(input), options
@@ -578,7 +578,7 @@ class AsyncMapsNamespace:
578
578
  Price: $0.00175 per request.
579
579
 
580
580
  Example:
581
- res = client.maps.search(limit=3, location="Austin, TX", placeMinimumStars="four", query="coffee", website="withWebsite")
581
+ res = client.maps.search(limit=3, location="Austin, TX", query="coffee")
582
582
  """
583
583
  raw = await self._client._arun_raw( # pyright: ignore[reportPrivateUsage]
584
584
  "maps.search", dict(input), options
@@ -19,7 +19,7 @@ class PinterestSearchInput(TypedDict, total=False):
19
19
  """Input for Pinterest Search."""
20
20
 
21
21
  limit: NotRequired[int]
22
- """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."""
22
+ """Maximum number of results to return (1-20, default 20). Range: 1 to 20."""
23
23
  preferLatencyUnderMs: NotRequired[int]
24
24
  """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."""
25
25
  query: Required[str]
@@ -195,7 +195,7 @@ class TiktokHashtagVideosInput(TypedDict, total=False):
195
195
  hashtag: Required[str]
196
196
  """TikTok hashtag to fetch videos for, without the # prefix (e.g. booktok)."""
197
197
  limit: NotRequired[int]
198
- """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."""
198
+ """Maximum number of results to return (1-20, default 20). Range: 1 to 20."""
199
199
  preferLatencyUnderMs: NotRequired[int]
200
200
  """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."""
201
201
 
@@ -1884,7 +1884,7 @@ class TiktokNamespace:
1884
1884
  List recent TikTok videos for a hashtag (creator, caption, views, likes,
1885
1885
  shares).
1886
1886
 
1887
- Price: $0.00144 per request.
1887
+ Price: $0.0036 per request.
1888
1888
 
1889
1889
  Example:
1890
1890
  res = client.tiktok.hashtag_videos(hashtag="cooking", limit=3)
@@ -2759,7 +2759,7 @@ class AsyncTiktokNamespace:
2759
2759
  List recent TikTok videos for a hashtag (creator, caption, views, likes,
2760
2760
  shares).
2761
2761
 
2762
- Price: $0.00144 per request.
2762
+ Price: $0.0036 per request.
2763
2763
 
2764
2764
  Example:
2765
2765
  res = client.tiktok.hashtag_videos(hashtag="cooking", limit=3)
@@ -109,7 +109,7 @@ class TiktokShopSearchInput(TypedDict, total=False):
109
109
  ]
110
110
  """Country code of the TikTok Shop market to search (e.g. US). Default: US."""
111
111
  limit: NotRequired[int]
112
- """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."""
112
+ """Maximum number of results to return (1-10, default 10). Range: 1 to 10."""
113
113
  preferLatencyUnderMs: NotRequired[int]
114
114
  """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."""
115
115
  query: Required[str]
@@ -21,7 +21,7 @@ class TripadvisorReviewsInput(TypedDict, total=False):
21
21
  languages: NotRequired[list[str]]
22
22
  """Only return reviews in these ISO 639-1 languages (e.g. ["en", "es"]); omit for all languages."""
23
23
  limit: NotRequired[int]
24
- """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."""
24
+ """Maximum number of results to return (1-20, default 20). Range: 1 to 20."""
25
25
  preferLatencyUnderMs: NotRequired[int]
26
26
  """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."""
27
27
  ratings: NotRequired[list[Literal["1", "2", "3", "4", "5"]]]
@@ -44,7 +44,7 @@ class TripadvisorSearchInput(TypedDict, total=False):
44
44
  includeRestaurants: NotRequired[bool]
45
45
  """Include restaurants in the results; set false to exclude them (e.g. false). Defaults to true. Default: true."""
46
46
  limit: NotRequired[int]
47
- """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."""
47
+ """Maximum number of results to return (1-20, default 20). Range: 1 to 20."""
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
50
  query: Required[str]
@@ -25,7 +25,7 @@ class TrustpilotReviewsInput(TypedDict, total=False):
25
25
  languages: NotRequired[list[str]]
26
26
  """Only return reviews in these ISO 639-1 languages (e.g. ["en", "de"]); omit for all languages."""
27
27
  limit: NotRequired[int]
28
- """Maximum number of results to return (1-200, default 200). Trustpilot serves at most 200 reviews per company. You are billed per result returned, so a lower limit costs less. Range: 1 to 200."""
28
+ """Maximum number of results to return (1-200, default 200). Trustpilot serves at most 200 reviews per company. Range: 1 to 200. Default: 200."""
29
29
  preferLatencyUnderMs: NotRequired[int]
30
30
  """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."""
31
31
  sortBy: NotRequired[str]
@@ -91,7 +91,7 @@ class TrustpilotNamespace:
91
91
  Pull Trustpilot reviews for any company by brand name: star ratings, review
92
92
  text, dates, and reviewer details as clean JSON.
93
93
 
94
- Price: $0.00006 per request plus $0.00005 per result (maximum $0.00886).
94
+ Price: $0.00225 per request.
95
95
 
96
96
  Example:
97
97
  res = client.trustpilot.reviews(company="stripe.com", limit=3)
@@ -119,7 +119,7 @@ class AsyncTrustpilotNamespace:
119
119
  Pull Trustpilot reviews for any company by brand name: star ratings, review
120
120
  text, dates, and reviewer details as clean JSON.
121
121
 
122
- Price: $0.00006 per request plus $0.00005 per result (maximum $0.00886).
122
+ Price: $0.00225 per request.
123
123
 
124
124
  Example:
125
125
  res = client.trustpilot.reviews(company="stripe.com", limit=3)
@@ -51,7 +51,7 @@ class WebScrapeInput(TypedDict, total=False):
51
51
  excludeTags: NotRequired[list[str]]
52
52
  """CSS selectors to drop before capture (for example ["nav", "footer", ".ads"]). Applied after includeTags."""
53
53
  formats: NotRequired[list[Literal["markdown", "html", "rawHtml"]]]
54
- """Which representations of the page to return. Any combination of: markdown (page content as Markdown), html (cleaned HTML), rawHtml (verbatim page HTML). Each requested format is returned under the matching output field. Defaults to Markdown and raw HTML."""
54
+ """Which representations of the page to return. Any combination of: markdown (page content as Markdown), html (the page HTML exactly as the browser received it, including head and script tags). Each requested format is returned under the matching output field. Defaults to both. rawHtml is a deprecated alias of html, returned under a rawHtml field for callers that predate the rename; send html instead."""
55
55
  includeTags: NotRequired[list[str]]
56
56
  """CSS selectors to keep. When set, only content matching these selectors is captured (for example ["article", "main"] or ["#content"])."""
57
57
  mobile: NotRequired[bool]
@@ -60,8 +60,6 @@ class WebScrapeInput(TypedDict, total=False):
60
60
  """When true, return only the main article content, stripping navigation, headers, footers, and other boilerplate. Defaults to false to capture the full page. Default: false."""
61
61
  preferLatencyUnderMs: NotRequired[int]
62
62
  """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."""
63
- stealth: NotRequired[bool]
64
- """When true, fetch through a stealth proxy that gets past bot protection which refuses an ordinary request. This costs materially more per request (see the pricing ceiling), so leave it off unless a normal scrape of the site comes back blocked or empty. Default: false."""
65
63
  url: Required[str]
66
64
  """The URL of the page to scrape."""
67
65
  waitFor: NotRequired[int]
@@ -118,7 +116,7 @@ class WebScrapeData(BaseModel):
118
116
  description: str = Field(description="The page meta description.")
119
117
  html: str | None = Field(
120
118
  default=None,
121
- description="The cleaned page HTML. Present only when 'html' is among the requested formats.",
119
+ description="The page HTML exactly as the browser received it, head and script tags included. Present when 'html' is among the requested formats (the default).",
122
120
  )
123
121
  markdown: str | None = Field(
124
122
  default=None,
@@ -127,7 +125,7 @@ class WebScrapeData(BaseModel):
127
125
  raw_html: str | None = Field(
128
126
  default=None,
129
127
  alias="rawHtml",
130
- description="The verbatim page HTML before cleaning. Present only when 'rawHtml' is among the requested formats.",
128
+ description="The same bytes as 'html'. Deprecated alias returned only when 'rawHtml' is among the requested formats; use 'html'.",
131
129
  )
132
130
  title: str = Field(description="The page title from its metadata.")
133
131
  url: str = Field(
@@ -206,7 +204,7 @@ class WebNamespace:
206
204
  Price: $0.0007 per request.
207
205
 
208
206
  Example:
209
- res = client.web.scrape(formats=["markdown", "rawHtml"], onlyMainContent=False, url="https://example.com")
207
+ res = client.web.scrape(formats=["markdown", "html"], onlyMainContent=False, url="https://example.com")
210
208
  """
211
209
  raw = self._client._run_raw( # pyright: ignore[reportPrivateUsage]
212
210
  "web.scrape", dict(input), options
@@ -287,7 +285,7 @@ class AsyncWebNamespace:
287
285
  Price: $0.0007 per request.
288
286
 
289
287
  Example:
290
- res = client.web.scrape(formats=["markdown", "rawHtml"], onlyMainContent=False, url="https://example.com")
288
+ res = client.web.scrape(formats=["markdown", "html"], onlyMainContent=False, url="https://example.com")
291
289
  """
292
290
  raw = await self._client._arun_raw( # pyright: ignore[reportPrivateUsage]
293
291
  "web.scrape", dict(input), options
@@ -62,7 +62,7 @@ class ZillowSearchInput(TypedDict, total=False):
62
62
  includeRoomForRent: NotRequired[bool]
63
63
  """Include room-for-rent listings in rent searches; when omitted or false only entire places are returned (e.g. true)."""
64
64
  limit: NotRequired[int]
65
- """Maximum number of results to return (1-25, default 25). You are billed per result returned, so a lower limit costs less. Range: 1 to 25. Default: 25."""
65
+ """Maximum number of results to return (1-25, default 25). Range: 1 to 25. Default: 25."""
66
66
  listingTypes: NotRequired[
67
67
  list[
68
68
  Literal[
File without changes
File without changes
File without changes
File without changes