getanyapi 0.56.0__tar.gz → 0.57.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.56.0 → getanyapi-0.57.0}/PKG-INFO +1 -1
  2. {getanyapi-0.56.0 → getanyapi-0.57.0}/pyproject.toml +1 -1
  3. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/__init__.py +1 -1
  4. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/facebook.py +96 -2
  5. {getanyapi-0.56.0 → getanyapi-0.57.0}/.gitignore +0 -0
  6. {getanyapi-0.56.0 → getanyapi-0.57.0}/README.md +0 -0
  7. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/_account.py +0 -0
  8. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/_async_client.py +0 -0
  9. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/_client.py +0 -0
  10. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/_errors.py +0 -0
  11. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/_idempotency.py +0 -0
  12. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/_pagination.py +0 -0
  13. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/_transport.py +0 -0
  14. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/discovery_types.py +0 -0
  15. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/__init__.py +0 -0
  16. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/ahrefs.py +0 -0
  17. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/airbnb.py +0 -0
  18. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/alibaba.py +0 -0
  19. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/amazon.py +0 -0
  20. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/apollo.py +0 -0
  21. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/appstore.py +0 -0
  22. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/bluesky.py +0 -0
  23. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/booking.py +0 -0
  24. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/capterra.py +0 -0
  25. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/chatgpt.py +0 -0
  26. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/coinmarketcap.py +0 -0
  27. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/company.py +0 -0
  28. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/company_enrichment.py +0 -0
  29. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/company_identify.py +0 -0
  30. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/company_search.py +0 -0
  31. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/congress.py +0 -0
  32. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/contact_enrichment.py +0 -0
  33. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/douyin.py +0 -0
  34. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/ebay.py +0 -0
  35. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/email.py +0 -0
  36. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/email_finding.py +0 -0
  37. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/email_verification.py +0 -0
  38. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/fiverr.py +0 -0
  39. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/g2.py +0 -0
  40. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/gemini.py +0 -0
  41. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/github.py +0 -0
  42. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/glassdoor.py +0 -0
  43. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/google.py +0 -0
  44. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/google_ads.py +0 -0
  45. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/google_finance.py +0 -0
  46. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/google_shopping.py +0 -0
  47. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/hackernews.py +0 -0
  48. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/indeed.py +0 -0
  49. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/instagram.py +0 -0
  50. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/job_search.py +0 -0
  51. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/linkedin.py +0 -0
  52. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/maps.py +0 -0
  53. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/mobile_phone.py +0 -0
  54. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/naver.py +0 -0
  55. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/nextdoor.py +0 -0
  56. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/people_search.py +0 -0
  57. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/perplexity.py +0 -0
  58. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/person.py +0 -0
  59. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/person_enrichment.py +0 -0
  60. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/pinterest.py +0 -0
  61. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/playstore.py +0 -0
  62. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/polymarket.py +0 -0
  63. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/property_records.py +0 -0
  64. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/realtor.py +0 -0
  65. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/reddit.py +0 -0
  66. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/redfin.py +0 -0
  67. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/rednote.py +0 -0
  68. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/sec.py +0 -0
  69. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/semrush.py +0 -0
  70. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/seo.py +0 -0
  71. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/similarweb.py +0 -0
  72. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/snapchat.py +0 -0
  73. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/social.py +0 -0
  74. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/spotify.py +0 -0
  75. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/substack.py +0 -0
  76. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/technographics.py +0 -0
  77. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/threads.py +0 -0
  78. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/tiktok.py +0 -0
  79. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/tiktok_shop.py +0 -0
  80. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/tripadvisor.py +0 -0
  81. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/trustpilot.py +0 -0
  82. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/truthsocial.py +0 -0
  83. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/twitter.py +0 -0
  84. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/upwork.py +0 -0
  85. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/walmart.py +0 -0
  86. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/web.py +0 -0
  87. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/weibo.py +0 -0
  88. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/yahoo_finance.py +0 -0
  89. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/yelp.py +0 -0
  90. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/youtube.py +0 -0
  91. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/zhihu.py +0 -0
  92. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/platforms/zillow.py +0 -0
  93. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/py.typed +0 -0
  94. {getanyapi-0.56.0 → getanyapi-0.57.0}/src/getanyapi/types.py +0 -0
  95. {getanyapi-0.56.0 → getanyapi-0.57.0}/tests/conftest.py +0 -0
  96. {getanyapi-0.56.0 → getanyapi-0.57.0}/tests/test_account.py +0 -0
  97. {getanyapi-0.56.0 → getanyapi-0.57.0}/tests/test_client.py +0 -0
  98. {getanyapi-0.56.0 → getanyapi-0.57.0}/tests/test_durable_requests.py +0 -0
  99. {getanyapi-0.56.0 → getanyapi-0.57.0}/tests/test_envelope.py +0 -0
  100. {getanyapi-0.56.0 → getanyapi-0.57.0}/tests/test_errors.py +0 -0
  101. {getanyapi-0.56.0 → getanyapi-0.57.0}/tests/test_fixture_roundtrip.py +0 -0
  102. {getanyapi-0.56.0 → getanyapi-0.57.0}/tests/test_fixture_sweep.py +0 -0
  103. {getanyapi-0.56.0 → getanyapi-0.57.0}/tests/test_not_found_reason.py +0 -0
  104. {getanyapi-0.56.0 → getanyapi-0.57.0}/tests/test_pagination.py +0 -0
  105. {getanyapi-0.56.0 → getanyapi-0.57.0}/tests/test_transport.py +0 -0
  106. {getanyapi-0.56.0 → getanyapi-0.57.0}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: getanyapi
3
- Version: 0.56.0
3
+ Version: 0.57.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.56.0"
7
+ version = "0.57.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.56.0"
58
+ __version__ = "0.57.0"
59
59
 
60
60
  __all__ = [
61
61
  # clients + top-level functions
@@ -348,6 +348,23 @@ class FacebookPageContactInput(TypedDict, total=False):
348
348
  """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`."""
349
349
 
350
350
 
351
+ class FacebookPageLookupInput(TypedDict, total=False):
352
+ """Input for Facebook Page Lookup."""
353
+
354
+ allowFallbacks: NotRequired[bool]
355
+ """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."""
356
+ ignoreSources: NotRequired[list[str]]
357
+ """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."""
358
+ limit: NotRequired[int]
359
+ """Maximum number of matches to return (1-7, default 7). Facebook's quick search answers a name with at most 7 matches. Range: 1 to 7. Default: 7."""
360
+ preferLatencyUnderMs: NotRequired[int]
361
+ """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."""
362
+ query: Required[str]
363
+ """Name to look up, as you would type it into Facebook's search box (e.g. NASA or plumber chicago)."""
364
+ source: NotRequired[list[str]]
365
+ """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`."""
366
+
367
+
351
368
  class FacebookPhotosInput(TypedDict, total=False):
352
369
  """Input for Facebook Page Photos."""
353
370
 
@@ -1867,6 +1884,35 @@ class FacebookPageContactItem(BaseModel):
1867
1884
  )
1868
1885
 
1869
1886
 
1887
+ class FacebookPageLookupData(BaseModel):
1888
+ items: list[FacebookPageLookupItem] = Field(
1889
+ description="Pages and profiles whose name matches the query, in Facebook's order. Matches can include personal profiles as well as Pages."
1890
+ )
1891
+
1892
+
1893
+ class FacebookPageLookupItem(BaseModel):
1894
+ model_config = ConfigDict(extra="allow", populate_by_name=True)
1895
+
1896
+ id: str = Field(
1897
+ description="Numeric Facebook id of the Page or profile, as a string. Populated whenever the provider has data for the entity."
1898
+ )
1899
+ image: str | None = Field(
1900
+ default=None,
1901
+ description="Profile picture URL. Facebook signs it in the query string, so it works only as returned and expires. Populated whenever the provider has data for the entity. Present whenever the upstream returns this record.",
1902
+ )
1903
+ is_verified: bool | None = Field(
1904
+ default=None,
1905
+ alias="isVerified",
1906
+ description="Whether Facebook shows the verified badge on this Page or profile.",
1907
+ )
1908
+ name: str = Field(
1909
+ description="Display name of the Page or profile. Populated whenever the provider has data for the entity."
1910
+ )
1911
+ url: str = Field(
1912
+ description="Facebook URL of the Page or profile. Populated whenever the provider has data for the entity."
1913
+ )
1914
+
1915
+
1870
1916
  class FacebookPhotosData(BaseModel):
1871
1917
  model_config = ConfigDict(populate_by_name=True)
1872
1918
 
@@ -2808,7 +2854,7 @@ class FacebookNamespace:
2808
2854
  List the public followers (or accounts followed) of any Facebook page or
2809
2855
  profile URL as normalized JSON records.
2810
2856
 
2811
- Price: $0 per request plus $0.0066 per result (maximum $0.132).
2857
+ Price: $0.03 per request plus $0.0045 per result (maximum $0.12).
2812
2858
 
2813
2859
  Example:
2814
2860
  res = client.facebook.followers(limit=3, url="https://www.facebook.com/nike")
@@ -2970,6 +3016,30 @@ class FacebookNamespace:
2970
3016
  )
2971
3017
  return RunResult[FacebookPageContactData].model_validate(raw)
2972
3018
 
3019
+ def page_lookup(
3020
+ self,
3021
+ *,
3022
+ options: RequestOptions | None = None,
3023
+ **input: Unpack[FacebookPageLookupInput],
3024
+ ) -> RunResult[FacebookPageLookupData]:
3025
+ """Facebook Page Lookup
3026
+
3027
+ Look up Facebook Pages and profiles by name with Facebook's own quick
3028
+ search. A name lookup that returns basic identity fields only: name, URL,
3029
+ profile image, Facebook id, and verified status. Matches can include
3030
+ personal profiles as well as Pages. For full Page details (category,
3031
+ followers, phone, website), use facebook.search_pages.
3032
+
3033
+ Price: $0.00975 per request.
3034
+
3035
+ Example:
3036
+ res = client.facebook.page_lookup(limit=5, query="NASA")
3037
+ """
3038
+ raw = self._client._run_raw( # pyright: ignore[reportPrivateUsage]
3039
+ "facebook.page_lookup", dict(input), options
3040
+ )
3041
+ return RunResult[FacebookPageLookupData].model_validate(raw)
3042
+
2973
3043
  def photos(
2974
3044
  self,
2975
3045
  *,
@@ -3639,7 +3709,7 @@ class AsyncFacebookNamespace:
3639
3709
  List the public followers (or accounts followed) of any Facebook page or
3640
3710
  profile URL as normalized JSON records.
3641
3711
 
3642
- Price: $0 per request plus $0.0066 per result (maximum $0.132).
3712
+ Price: $0.03 per request plus $0.0045 per result (maximum $0.12).
3643
3713
 
3644
3714
  Example:
3645
3715
  res = client.facebook.followers(limit=3, url="https://www.facebook.com/nike")
@@ -3801,6 +3871,30 @@ class AsyncFacebookNamespace:
3801
3871
  )
3802
3872
  return RunResult[FacebookPageContactData].model_validate(raw)
3803
3873
 
3874
+ async def page_lookup(
3875
+ self,
3876
+ *,
3877
+ options: RequestOptions | None = None,
3878
+ **input: Unpack[FacebookPageLookupInput],
3879
+ ) -> RunResult[FacebookPageLookupData]:
3880
+ """Facebook Page Lookup
3881
+
3882
+ Look up Facebook Pages and profiles by name with Facebook's own quick
3883
+ search. A name lookup that returns basic identity fields only: name, URL,
3884
+ profile image, Facebook id, and verified status. Matches can include
3885
+ personal profiles as well as Pages. For full Page details (category,
3886
+ followers, phone, website), use facebook.search_pages.
3887
+
3888
+ Price: $0.00975 per request.
3889
+
3890
+ Example:
3891
+ res = client.facebook.page_lookup(limit=5, query="NASA")
3892
+ """
3893
+ raw = await self._client._arun_raw( # pyright: ignore[reportPrivateUsage]
3894
+ "facebook.page_lookup", dict(input), options
3895
+ )
3896
+ return RunResult[FacebookPageLookupData].model_validate(raw)
3897
+
3804
3898
  async def photos(
3805
3899
  self,
3806
3900
  *,
File without changes
File without changes
File without changes
File without changes