getanyapi 0.59.0__tar.gz → 0.61.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 (106) hide show
  1. {getanyapi-0.59.0 → getanyapi-0.61.0}/PKG-INFO +1 -1
  2. {getanyapi-0.59.0 → getanyapi-0.61.0}/pyproject.toml +1 -1
  3. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/__init__.py +1 -1
  4. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/ebay.py +21 -4
  5. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/twitter.py +12 -0
  6. {getanyapi-0.59.0 → getanyapi-0.61.0}/.gitignore +0 -0
  7. {getanyapi-0.59.0 → getanyapi-0.61.0}/README.md +0 -0
  8. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/_account.py +0 -0
  9. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/_async_client.py +0 -0
  10. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/_client.py +0 -0
  11. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/_errors.py +0 -0
  12. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/_idempotency.py +0 -0
  13. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/_pagination.py +0 -0
  14. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/_transport.py +0 -0
  15. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/discovery_types.py +0 -0
  16. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/__init__.py +0 -0
  17. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/ahrefs.py +0 -0
  18. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/airbnb.py +0 -0
  19. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/alibaba.py +0 -0
  20. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/amazon.py +0 -0
  21. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/apollo.py +0 -0
  22. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/appstore.py +0 -0
  23. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/bluesky.py +0 -0
  24. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/booking.py +0 -0
  25. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/capterra.py +0 -0
  26. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/chatgpt.py +0 -0
  27. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/coinmarketcap.py +0 -0
  28. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/company.py +0 -0
  29. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/company_enrichment.py +0 -0
  30. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/company_identify.py +0 -0
  31. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/company_search.py +0 -0
  32. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/congress.py +0 -0
  33. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/contact_enrichment.py +0 -0
  34. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/douyin.py +0 -0
  35. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/email.py +0 -0
  36. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/email_finding.py +0 -0
  37. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/email_verification.py +0 -0
  38. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/facebook.py +0 -0
  39. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/fiverr.py +0 -0
  40. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/g2.py +0 -0
  41. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/gemini.py +0 -0
  42. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/github.py +0 -0
  43. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/glassdoor.py +0 -0
  44. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/google.py +0 -0
  45. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/google_ads.py +0 -0
  46. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/google_finance.py +0 -0
  47. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/google_shopping.py +0 -0
  48. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/hackernews.py +0 -0
  49. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/indeed.py +0 -0
  50. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/instagram.py +0 -0
  51. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/job_search.py +0 -0
  52. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/linkedin.py +0 -0
  53. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/maps.py +0 -0
  54. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/mobile_phone.py +0 -0
  55. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/naver.py +0 -0
  56. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/nextdoor.py +0 -0
  57. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/people_search.py +0 -0
  58. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/perplexity.py +0 -0
  59. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/person.py +0 -0
  60. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/person_enrichment.py +0 -0
  61. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/pinterest.py +0 -0
  62. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/playstore.py +0 -0
  63. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/polymarket.py +0 -0
  64. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/property_records.py +0 -0
  65. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/realtor.py +0 -0
  66. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/reddit.py +0 -0
  67. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/redfin.py +0 -0
  68. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/rednote.py +0 -0
  69. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/sec.py +0 -0
  70. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/semrush.py +0 -0
  71. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/seo.py +0 -0
  72. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/similarweb.py +0 -0
  73. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/snapchat.py +0 -0
  74. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/social.py +0 -0
  75. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/spotify.py +0 -0
  76. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/substack.py +0 -0
  77. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/technographics.py +0 -0
  78. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/threads.py +0 -0
  79. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/tiktok.py +0 -0
  80. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/tiktok_shop.py +0 -0
  81. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/tripadvisor.py +0 -0
  82. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/trustpilot.py +0 -0
  83. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/truthsocial.py +0 -0
  84. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/upwork.py +0 -0
  85. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/walmart.py +0 -0
  86. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/web.py +0 -0
  87. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/weibo.py +0 -0
  88. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/yahoo_finance.py +0 -0
  89. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/yelp.py +0 -0
  90. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/youtube.py +0 -0
  91. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/zhihu.py +0 -0
  92. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/platforms/zillow.py +0 -0
  93. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/py.typed +0 -0
  94. {getanyapi-0.59.0 → getanyapi-0.61.0}/src/getanyapi/types.py +0 -0
  95. {getanyapi-0.59.0 → getanyapi-0.61.0}/tests/conftest.py +0 -0
  96. {getanyapi-0.59.0 → getanyapi-0.61.0}/tests/test_account.py +0 -0
  97. {getanyapi-0.59.0 → getanyapi-0.61.0}/tests/test_client.py +0 -0
  98. {getanyapi-0.59.0 → getanyapi-0.61.0}/tests/test_durable_requests.py +0 -0
  99. {getanyapi-0.59.0 → getanyapi-0.61.0}/tests/test_envelope.py +0 -0
  100. {getanyapi-0.59.0 → getanyapi-0.61.0}/tests/test_errors.py +0 -0
  101. {getanyapi-0.59.0 → getanyapi-0.61.0}/tests/test_fixture_roundtrip.py +0 -0
  102. {getanyapi-0.59.0 → getanyapi-0.61.0}/tests/test_fixture_sweep.py +0 -0
  103. {getanyapi-0.59.0 → getanyapi-0.61.0}/tests/test_not_found_reason.py +0 -0
  104. {getanyapi-0.59.0 → getanyapi-0.61.0}/tests/test_pagination.py +0 -0
  105. {getanyapi-0.59.0 → getanyapi-0.61.0}/tests/test_transport.py +0 -0
  106. {getanyapi-0.59.0 → getanyapi-0.61.0}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: getanyapi
3
- Version: 0.59.0
3
+ Version: 0.61.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.59.0"
7
+ version = "0.61.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.59.0"
58
+ __version__ = "0.61.0"
59
59
 
60
60
  __all__ = [
61
61
  # clients + top-level functions
@@ -99,8 +99,12 @@ class EbaySoldListingsInput(TypedDict, total=False):
99
99
 
100
100
  allowFallbacks: NotRequired[bool]
101
101
  """Optional, default true. When false, only the sources listed in `source` may serve; the request is refused with no charge if none of them can. When true, the listed sources are tried first and any other source may serve after them, at the normal price. Default: true."""
102
+ categoryId: NotRequired[str]
103
+ """Optional numeric eBay category id to search within (e.g. 9355 for Cell Phones & Smartphones, 9394 for Cell Phone Accessories)."""
102
104
  condition: NotRequired[Literal["any", "new", "used"]]
103
105
  """Item condition filter (e.g. used). Default: any."""
106
+ endDate: NotRequired[str]
107
+ """Only return listings sold on or before this date, inclusive, in YYYY-MM-DD format (e.g. 2026-09-15). This bound is applied to each page after it is fetched, so a page can hold fewer than limit listings, or none, while hasMore is still true: keep requesting the next page until hasMore is false."""
104
108
  freeShipping: NotRequired[bool]
105
109
  """Not supported by the current sources: only false (no filter) is accepted; true is refused without charge."""
106
110
  ignoreSources: NotRequired[list[str]]
@@ -113,6 +117,8 @@ class EbaySoldListingsInput(TypedDict, total=False):
113
117
  """Optional maximum sold price in the site currency (e.g. 500). Minimum: 0."""
114
118
  minPrice: NotRequired[float]
115
119
  """Optional minimum sold price in the site currency (e.g. 200). Minimum: 0."""
120
+ page: NotRequired[int]
121
+ """1-based results page. Use with hasMore in the output to paginate, and keep query, filters, and limit the same while walking pages, because limit sets the page size. Minimum: 1. Default: 1."""
116
122
  preferLatencyUnderMs: NotRequired[int]
117
123
  """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."""
118
124
  query: Required[str]
@@ -127,6 +133,8 @@ class EbaySoldListingsInput(TypedDict, total=False):
127
133
  """Result sort order; omitted means ended_recently (e.g. price_high sorts by highest sold price plus shipping first)."""
128
134
  source: NotRequired[list[str]]
129
135
  """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`."""
136
+ startDate: NotRequired[str]
137
+ """Only return listings sold on or after this date, inclusive, in YYYY-MM-DD format (e.g. 2026-09-01)."""
130
138
 
131
139
 
132
140
  class EbaySoldListingsThinInput(TypedDict, total=False):
@@ -491,6 +499,13 @@ class EbaySearchItem(BaseModel):
491
499
 
492
500
 
493
501
  class EbaySoldListingsData(BaseModel):
502
+ model_config = ConfigDict(populate_by_name=True)
503
+
504
+ has_more: bool | None = Field(
505
+ default=None,
506
+ alias="hasMore",
507
+ description="True when another results page exists. With endDate set a page can be short or empty while this is still true; request page + 1 to continue.",
508
+ )
494
509
  items: list[EbaySoldListingsItem] = Field(
495
510
  description="Sold listing records: title, sold price, sale date, condition, seller, and item URL. Populated whenever the provider has data for the entity."
496
511
  )
@@ -722,8 +737,9 @@ class EbayNamespace:
722
737
  """eBay Sold Listings
723
738
 
724
739
  Retrieve recently sold eBay listings for any keyword with optional
725
- price-range, condition, and sort filters (sold price, sale date, condition,
726
- seller, item details); ideal for pricing research.
740
+ price-range, condition, category, sold-date, and sort filters, page by page
741
+ (sold price, sale date, condition, seller, item details); ideal for pricing
742
+ research.
727
743
 
728
744
  Price: $0.0135 per request.
729
745
 
@@ -838,8 +854,9 @@ class AsyncEbayNamespace:
838
854
  """eBay Sold Listings
839
855
 
840
856
  Retrieve recently sold eBay listings for any keyword with optional
841
- price-range, condition, and sort filters (sold price, sale date, condition,
842
- seller, item details); ideal for pricing research.
857
+ price-range, condition, category, sold-date, and sort filters, page by page
858
+ (sold price, sale date, condition, seller, item details); ideal for pricing
859
+ research.
843
860
 
844
861
  Price: $0.0135 per request.
845
862
 
@@ -192,6 +192,7 @@ class TwitterSearchInput(TypedDict, total=False):
192
192
  "authorVerified",
193
193
  "bookmarkCount",
194
194
  "conversationId",
195
+ "inReplyToId",
195
196
  "isReply",
196
197
  "lang",
197
198
  "likeCount",
@@ -298,6 +299,7 @@ class TwitterTweetInput(TypedDict, total=False):
298
299
  "bookmarks",
299
300
  "conversationId",
300
301
  "height",
302
+ "inReplyToId",
301
303
  "lang",
302
304
  "likes",
303
305
  "media",
@@ -932,6 +934,11 @@ class TwitterSearchItem(BaseModel):
932
934
  id: str = Field(
933
935
  description="Populated whenever the provider has data for the entity."
934
936
  )
937
+ in_reply_to_id: str | None = Field(
938
+ default=None,
939
+ alias="inReplyToId",
940
+ description="Id of the post this post directly replies to, as a string, or null when the post is not a reply.",
941
+ )
935
942
  is_reply: bool | None = Field(default=None, alias="isReply")
936
943
  lang: str | None = None
937
944
  like_count: int | None = Field(default=None, alias="likeCount")
@@ -1315,6 +1322,11 @@ class TwitterTweetData(BaseModel):
1315
1322
  id: str = Field(
1316
1323
  description="Populated whenever the provider has data for the entity."
1317
1324
  )
1325
+ in_reply_to_id: str | None = Field(
1326
+ default=None,
1327
+ alias="inReplyToId",
1328
+ description="Id of the post this post directly replies to, as a string, or null when the post is not a reply.",
1329
+ )
1318
1330
  lang: str | None = Field(
1319
1331
  default=None, description="Two-letter language code X detected for the post."
1320
1332
  )
File without changes
File without changes
File without changes
File without changes