getanyapi 0.85.1__tar.gz → 0.87.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 (108) hide show
  1. {getanyapi-0.85.1 → getanyapi-0.87.0}/PKG-INFO +1 -1
  2. {getanyapi-0.85.1 → getanyapi-0.87.0}/pyproject.toml +1 -1
  3. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/__init__.py +1 -1
  4. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/instagram.py +4 -0
  5. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/linkedin.py +22 -16
  6. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/tiktok.py +2 -2
  7. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/twitter.py +2 -2
  8. {getanyapi-0.85.1 → getanyapi-0.87.0}/.gitignore +0 -0
  9. {getanyapi-0.85.1 → getanyapi-0.87.0}/README.md +0 -0
  10. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/_account.py +0 -0
  11. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/_async_client.py +0 -0
  12. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/_client.py +0 -0
  13. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/_errors.py +0 -0
  14. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/_idempotency.py +0 -0
  15. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/_pagination.py +0 -0
  16. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/_transport.py +0 -0
  17. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/discovery_types.py +0 -0
  18. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/__init__.py +0 -0
  19. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/ahrefs.py +0 -0
  20. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/airbnb.py +0 -0
  21. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/alibaba.py +0 -0
  22. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/amazon.py +0 -0
  23. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/apollo.py +0 -0
  24. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/appstore.py +0 -0
  25. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/bluesky.py +0 -0
  26. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/booking.py +0 -0
  27. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/capterra.py +0 -0
  28. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/chatgpt.py +0 -0
  29. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/coinmarketcap.py +0 -0
  30. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/company.py +0 -0
  31. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/company_enrichment.py +0 -0
  32. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/company_identify.py +0 -0
  33. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/company_search.py +0 -0
  34. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/congress.py +0 -0
  35. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/contact_enrichment.py +0 -0
  36. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/douyin.py +0 -0
  37. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/ebay.py +0 -0
  38. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/email.py +0 -0
  39. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/email_finding.py +0 -0
  40. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/email_verification.py +0 -0
  41. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/facebook.py +0 -0
  42. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/fiverr.py +0 -0
  43. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/g2.py +0 -0
  44. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/gemini.py +0 -0
  45. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/github.py +0 -0
  46. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/glassdoor.py +0 -0
  47. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/google.py +0 -0
  48. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/google_ads.py +0 -0
  49. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/google_finance.py +0 -0
  50. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/google_shopping.py +0 -0
  51. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/hackernews.py +0 -0
  52. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/indeed.py +0 -0
  53. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/job_search.py +0 -0
  54. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/maps.py +0 -0
  55. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/mobile_phone.py +0 -0
  56. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/naver.py +0 -0
  57. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/nextdoor.py +0 -0
  58. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/people_search.py +0 -0
  59. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/perplexity.py +0 -0
  60. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/person.py +0 -0
  61. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/person_enrichment.py +0 -0
  62. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/pexels.py +0 -0
  63. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/pinterest.py +0 -0
  64. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/playstore.py +0 -0
  65. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/polymarket.py +0 -0
  66. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/property_records.py +0 -0
  67. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/realtor.py +0 -0
  68. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/reddit.py +0 -0
  69. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/redfin.py +0 -0
  70. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/rednote.py +0 -0
  71. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/sec.py +0 -0
  72. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/semrush.py +0 -0
  73. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/seo.py +0 -0
  74. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/similarweb.py +0 -0
  75. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/snapchat.py +0 -0
  76. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/social.py +0 -0
  77. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/spotify.py +0 -0
  78. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/substack.py +0 -0
  79. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/technographics.py +0 -0
  80. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/threads.py +0 -0
  81. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/tiktok_shop.py +0 -0
  82. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/tripadvisor.py +0 -0
  83. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/trustpilot.py +0 -0
  84. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/truthsocial.py +0 -0
  85. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/unsplash.py +0 -0
  86. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/upwork.py +0 -0
  87. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/walmart.py +0 -0
  88. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/web.py +0 -0
  89. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/weibo.py +0 -0
  90. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/yahoo_finance.py +0 -0
  91. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/yelp.py +0 -0
  92. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/youtube.py +0 -0
  93. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/zhihu.py +0 -0
  94. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/platforms/zillow.py +0 -0
  95. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/py.typed +0 -0
  96. {getanyapi-0.85.1 → getanyapi-0.87.0}/src/getanyapi/types.py +0 -0
  97. {getanyapi-0.85.1 → getanyapi-0.87.0}/tests/conftest.py +0 -0
  98. {getanyapi-0.85.1 → getanyapi-0.87.0}/tests/test_account.py +0 -0
  99. {getanyapi-0.85.1 → getanyapi-0.87.0}/tests/test_client.py +0 -0
  100. {getanyapi-0.85.1 → getanyapi-0.87.0}/tests/test_durable_requests.py +0 -0
  101. {getanyapi-0.85.1 → getanyapi-0.87.0}/tests/test_envelope.py +0 -0
  102. {getanyapi-0.85.1 → getanyapi-0.87.0}/tests/test_errors.py +0 -0
  103. {getanyapi-0.85.1 → getanyapi-0.87.0}/tests/test_fixture_roundtrip.py +0 -0
  104. {getanyapi-0.85.1 → getanyapi-0.87.0}/tests/test_fixture_sweep.py +0 -0
  105. {getanyapi-0.85.1 → getanyapi-0.87.0}/tests/test_not_found_reason.py +0 -0
  106. {getanyapi-0.85.1 → getanyapi-0.87.0}/tests/test_pagination.py +0 -0
  107. {getanyapi-0.85.1 → getanyapi-0.87.0}/tests/test_transport.py +0 -0
  108. {getanyapi-0.85.1 → getanyapi-0.87.0}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: getanyapi
3
- Version: 0.85.1
3
+ Version: 0.87.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.85.1"
7
+ version = "0.87.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.85.1"
58
+ __version__ = "0.87.0"
59
59
 
60
60
  __all__ = [
61
61
  # clients + top-level functions
@@ -1682,6 +1682,10 @@ class InstagramReelTranscriptItem(BaseModel):
1682
1682
  default=None,
1683
1683
  description="The reel's short code, the part of its instagram.com URL after /reel/. Empty when the request supplied a CDN media URL.",
1684
1684
  )
1685
+ source: Literal["audio_asr", "no_audio", "transcript_unavailable"] | None = Field(
1686
+ default=None,
1687
+ description='Why the transcript reads the way it does. "audio_asr" means the words come from speech recognition over the reel\'s audio; a reel with only music in it transcribes to an empty text this way, and its audio time is charged. "no_audio" means there was nothing to listen to: the video has no audio track, or the post is a photo with no video. The transcript is empty because that is the answer, and only the request price is charged, with no audio time. "transcript_unavailable" means recognition did not complete for this reel, so the transcript is empty for that reason rather than because the reel has no speech in it; the rest of the record is still what we resolved, and no audio time is charged.',
1688
+ )
1685
1689
  text: str = Field(
1686
1690
  description="The full speech transcript. Empty when the reel has no detectable spoken audio, or when the post is a photo with no video to transcribe. Populated whenever the provider has data for the entity."
1687
1691
  )
@@ -563,7 +563,7 @@ class LinkedinSearchCompaniesInput(TypedDict, total=False):
563
563
 
564
564
 
565
565
  class LinkedinSearchLeadsInput(TypedDict, total=False):
566
- """Input for LinkedIn Fast Leads List."""
566
+ """Input for LinkedIn Sales Navigator Lead Search."""
567
567
 
568
568
  allowFallbacks: NotRequired[bool]
569
569
  """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."""
@@ -674,7 +674,7 @@ class LinkedinSearchLeadsInput(TypedDict, total=False):
674
674
  location: NotRequired[str]
675
675
  """Optional location filter (e.g. 'San Francisco'). Commas are not allowed in a value."""
676
676
  page: NotRequired[int]
677
- """Which page of up to 25 leads to return, starting at 1 (1-100, default 1). Each page is billed as one request. Range: 1 to 100. Default: 1."""
677
+ """Which page of up to 25 leads to return, starting at 1 (1-100, default 1). Also pages through a salesNavUrl search. Each page is billed as one request. Range: 1 to 100. Default: 1."""
678
678
  pastCompanies: NotRequired[list[str]]
679
679
  """Filter to people who previously worked at any of these companies, by name. Commas are not allowed in a value. Up to 50 values."""
680
680
  pastJobTitles: NotRequired[list[str]]
@@ -710,12 +710,14 @@ class LinkedinSearchLeadsInput(TypedDict, total=False):
710
710
  ]
711
711
  ]
712
712
  """Filter by the profile's primary language."""
713
- query: Required[str]
714
- """Search query for LinkedIn profiles: a role, name, or keywords (e.g. 'Marketing Manager')."""
713
+ query: NotRequired[str]
714
+ """Search keywords for LinkedIn leads: a role, name, or keywords (e.g. 'Marketing Manager'). Provide this or salesNavUrl."""
715
715
  recentlyChangedJobs: NotRequired[bool]
716
716
  """When true, only return people who recently changed jobs (a strong sales/recruiting signal)."""
717
717
  recentlyPostedOnLinkedIn: NotRequired[bool]
718
718
  """When true, only return people who recently posted on LinkedIn (an activity signal)."""
719
+ salesNavUrl: NotRequired[str]
720
+ """Alternatively, a LinkedIn Sales Navigator lead-search URL you built in Sales Navigator (e.g. https://www.linkedin.com/sales/search/people?query=(keywords%3Aengineer)). When set it overrides query and every other filter on this request; only page still applies."""
719
721
  schools: NotRequired[list[str]]
720
722
  """Filter to people who attended any of these schools, by name. Commas are not allowed in a value. Up to 50 values."""
721
723
  seniorityLevelIds: NotRequired[
@@ -4881,12 +4883,14 @@ class LinkedinNamespace:
4881
4883
  options: RequestOptions | None = None,
4882
4884
  **input: Unpack[LinkedinSearchLeadsInput],
4883
4885
  ) -> RunResult[LinkedinSearchLeadsData]:
4884
- """LinkedIn Fast Leads List
4885
-
4886
- Fast LinkedIn leads list: one call returns a page of up to 25 people
4887
- matching a keyword and optional filters (location, job title, company,
4888
- school, seniority, function, company size, and more), each with name,
4889
- current positions, location, summary, and photo. Each lead's url opens the
4886
+ """LinkedIn Sales Navigator Lead Search
4887
+
4888
+ LinkedIn lead search with Sales Navigator's search and filters: one call
4889
+ returns a page of up to 25 people matching a keyword and Sales Navigator
4890
+ lead filters (location, job title, current and past company, school,
4891
+ seniority, function, company size, and more), or the results of a Sales
4892
+ Navigator lead-search URL you built yourself. Each lead comes with name,
4893
+ current positions, location, summary, and photo, and its url opens the
4890
4894
  profile and can be passed to linkedin.profile for the full record. For full
4891
4895
  profiles in one call use linkedin.search_profiles.
4892
4896
 
@@ -5600,12 +5604,14 @@ class AsyncLinkedinNamespace:
5600
5604
  options: RequestOptions | None = None,
5601
5605
  **input: Unpack[LinkedinSearchLeadsInput],
5602
5606
  ) -> RunResult[LinkedinSearchLeadsData]:
5603
- """LinkedIn Fast Leads List
5604
-
5605
- Fast LinkedIn leads list: one call returns a page of up to 25 people
5606
- matching a keyword and optional filters (location, job title, company,
5607
- school, seniority, function, company size, and more), each with name,
5608
- current positions, location, summary, and photo. Each lead's url opens the
5607
+ """LinkedIn Sales Navigator Lead Search
5608
+
5609
+ LinkedIn lead search with Sales Navigator's search and filters: one call
5610
+ returns a page of up to 25 people matching a keyword and Sales Navigator
5611
+ lead filters (location, job title, current and past company, school,
5612
+ seniority, function, company size, and more), or the results of a Sales
5613
+ Navigator lead-search URL you built yourself. Each lead comes with name,
5614
+ current positions, location, summary, and photo, and its url opens the
5609
5615
  profile and can be passed to linkedin.profile for the full record. For full
5610
5616
  profiles in one call use linkedin.search_profiles.
5611
5617
 
@@ -2528,8 +2528,8 @@ class TiktokVideoTranscriptFullData(BaseModel):
2528
2528
  default=None,
2529
2529
  description="Timed transcript segments in playback order, one per sentence, so a segment locates a specific line in the video rather than a whole speaker turn. Populated whenever the provider has data for the entity. Present whenever the upstream returns this record.",
2530
2530
  )
2531
- source: Literal["audio_asr", "transcript_unavailable"] = Field(
2532
- description='How the text was produced. "audio_asr" means the words come from speech recognition over the video\'s audio, never from a caption track TikTok published - for TikTok\'s own captions, use tiktok.video_transcript. "transcript_unavailable" means recognition did not complete for this video, so the transcript is empty for that reason rather than because the video has no speech in it; the rest of the record is still what we resolved, and no audio time is charged. Populated whenever the provider has data for the entity.'
2531
+ source: Literal["audio_asr", "no_audio", "transcript_unavailable"] = Field(
2532
+ description='How the text was produced. "audio_asr" means the words come from speech recognition over the video\'s audio, never from a caption track TikTok published - for TikTok\'s own captions, use tiktok.video_transcript. "transcript_unavailable" means recognition did not complete for this video, so the transcript is empty for that reason rather than because the video has no speech in it; the rest of the record is still what we resolved, and no audio time is charged. "no_audio" means there was nothing to listen to: the video has no audio track, or the post has no video. The transcript is empty because that is the answer, the rest of the record is still what we resolved, and only the request price is charged, with no audio time. Populated whenever the provider has data for the entity.'
2533
2533
  )
2534
2534
  thumbnail_url: str | None = Field(
2535
2535
  default=None,
@@ -1796,7 +1796,7 @@ class TwitterNamespace:
1796
1796
  records with follower, following, and post counts plus cursor pagination.
1797
1797
  Use twitter.search for posts.
1798
1798
 
1799
- Price: $0.00075 per request.
1799
+ Price: $0.0007 per request.
1800
1800
 
1801
1801
  Example:
1802
1802
  res = client.twitter.search_users(query="ai agents")
@@ -2336,7 +2336,7 @@ class AsyncTwitterNamespace:
2336
2336
  records with follower, following, and post counts plus cursor pagination.
2337
2337
  Use twitter.search for posts.
2338
2338
 
2339
- Price: $0.00075 per request.
2339
+ Price: $0.0007 per request.
2340
2340
 
2341
2341
  Example:
2342
2342
  res = client.twitter.search_users(query="ai agents")
File without changes
File without changes
File without changes
File without changes