getanyapi 0.65.0__tar.gz → 0.66.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.
- {getanyapi-0.65.0 → getanyapi-0.66.0}/PKG-INFO +1 -1
- {getanyapi-0.65.0 → getanyapi-0.66.0}/pyproject.toml +1 -1
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/__init__.py +1 -1
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/facebook.py +63 -5
- {getanyapi-0.65.0 → getanyapi-0.66.0}/.gitignore +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/README.md +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/_account.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/_async_client.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/_client.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/_errors.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/_idempotency.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/_pagination.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/_transport.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/discovery_types.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/__init__.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/ahrefs.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/airbnb.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/alibaba.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/amazon.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/apollo.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/appstore.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/bluesky.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/booking.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/capterra.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/chatgpt.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/coinmarketcap.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/company.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/company_enrichment.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/company_identify.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/company_search.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/congress.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/contact_enrichment.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/douyin.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/ebay.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/email.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/email_finding.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/email_verification.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/fiverr.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/g2.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/gemini.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/github.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/glassdoor.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/google.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/google_ads.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/google_finance.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/google_shopping.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/hackernews.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/indeed.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/instagram.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/job_search.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/linkedin.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/maps.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/mobile_phone.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/naver.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/nextdoor.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/people_search.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/perplexity.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/person.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/person_enrichment.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/pinterest.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/playstore.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/polymarket.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/property_records.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/realtor.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/reddit.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/redfin.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/rednote.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/sec.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/semrush.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/seo.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/similarweb.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/snapchat.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/social.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/spotify.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/substack.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/technographics.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/threads.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/tiktok.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/tiktok_shop.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/tripadvisor.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/trustpilot.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/truthsocial.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/twitter.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/upwork.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/walmart.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/web.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/weibo.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/yahoo_finance.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/yelp.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/youtube.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/zhihu.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/platforms/zillow.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/py.typed +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/src/getanyapi/types.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/tests/conftest.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/tests/test_account.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/tests/test_client.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/tests/test_durable_requests.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/tests/test_envelope.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/tests/test_errors.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/tests/test_fixture_roundtrip.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/tests/test_fixture_sweep.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/tests/test_not_found_reason.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/tests/test_pagination.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/tests/test_transport.py +0 -0
- {getanyapi-0.65.0 → getanyapi-0.66.0}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: getanyapi
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.66.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
|
|
@@ -93,6 +93,29 @@ class FacebookAdsSearchInput(TypedDict, total=False):
|
|
|
93
93
|
"""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."""
|
|
94
94
|
query: Required[str]
|
|
95
95
|
"""Keyword to search the Meta Ad Library for (e.g. "protein powder")."""
|
|
96
|
+
requireFields: NotRequired[
|
|
97
|
+
list[
|
|
98
|
+
Literal[
|
|
99
|
+
"active",
|
|
100
|
+
"adCount",
|
|
101
|
+
"ads",
|
|
102
|
+
"caption",
|
|
103
|
+
"categories",
|
|
104
|
+
"endDate",
|
|
105
|
+
"isReshared",
|
|
106
|
+
"linkDescription",
|
|
107
|
+
"media",
|
|
108
|
+
"nextCursor",
|
|
109
|
+
"pageCategories",
|
|
110
|
+
"pageDeleted",
|
|
111
|
+
"pageLikes",
|
|
112
|
+
"pageProfilePicture",
|
|
113
|
+
"pageUrl",
|
|
114
|
+
"totalResults",
|
|
115
|
+
]
|
|
116
|
+
]
|
|
117
|
+
]
|
|
118
|
+
"""Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `totalResults` or `pageLikes`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on an ad that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge."""
|
|
96
119
|
searchType: NotRequired[Literal["keyword_unordered", "keyword_exact_phrase"]]
|
|
97
120
|
"""Match mode for the query: loose keyword match (keyword_unordered, the default) or exact phrase (keyword_exact_phrase)."""
|
|
98
121
|
sortBy: NotRequired[Literal["impressions", "recent"]]
|
|
@@ -430,6 +453,21 @@ class FacebookPostCommentsInput(TypedDict, total=False):
|
|
|
430
453
|
"""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."""
|
|
431
454
|
preferLatencyUnderMs: NotRequired[int]
|
|
432
455
|
"""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."""
|
|
456
|
+
requireFields: NotRequired[
|
|
457
|
+
list[
|
|
458
|
+
Literal[
|
|
459
|
+
"authorId",
|
|
460
|
+
"authorImage",
|
|
461
|
+
"expansionToken",
|
|
462
|
+
"feedbackId",
|
|
463
|
+
"hasNextPage",
|
|
464
|
+
"nextCursor",
|
|
465
|
+
"reactions",
|
|
466
|
+
"replies",
|
|
467
|
+
]
|
|
468
|
+
]
|
|
469
|
+
]
|
|
470
|
+
"""Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `feedbackId` or `hasNextPage`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a comment that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge."""
|
|
433
471
|
source: NotRequired[list[str]]
|
|
434
472
|
"""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`."""
|
|
435
473
|
url: NotRequired[str]
|
|
@@ -515,6 +553,21 @@ class FacebookProfileReelsInput(TypedDict, total=False):
|
|
|
515
553
|
"""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."""
|
|
516
554
|
preferLatencyUnderMs: NotRequired[int]
|
|
517
555
|
"""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."""
|
|
556
|
+
requireFields: NotRequired[
|
|
557
|
+
list[
|
|
558
|
+
Literal[
|
|
559
|
+
"authorId",
|
|
560
|
+
"authorImage",
|
|
561
|
+
"authorName",
|
|
562
|
+
"authorVerified",
|
|
563
|
+
"durationSeconds",
|
|
564
|
+
"feedbackId",
|
|
565
|
+
"nextCursor",
|
|
566
|
+
"views",
|
|
567
|
+
]
|
|
568
|
+
]
|
|
569
|
+
]
|
|
570
|
+
"""Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `feedbackId` or `authorVerified`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a reel that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge."""
|
|
518
571
|
source: NotRequired[list[str]]
|
|
519
572
|
"""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`."""
|
|
520
573
|
url: Required[str]
|
|
@@ -565,7 +618,7 @@ class FacebookSearchPostsInput(TypedDict, total=False):
|
|
|
565
618
|
ignoreSources: NotRequired[list[str]]
|
|
566
619
|
"""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."""
|
|
567
620
|
limit: NotRequired[int]
|
|
568
|
-
"""Maximum number of results to return (1-20, default 20).
|
|
621
|
+
"""Maximum number of results to return (1-20, default 20). Range: 1 to 20."""
|
|
569
622
|
location: NotRequired[str]
|
|
570
623
|
"""Optional location to narrow results; include both city and country for best matches (e.g. 'Paris, France')."""
|
|
571
624
|
preferLatencyUnderMs: NotRequired[int]
|
|
@@ -906,7 +959,10 @@ class FacebookAdsSearchData(BaseModel):
|
|
|
906
959
|
alias="nextCursor",
|
|
907
960
|
description="Opaque cursor for the next page of ads, or null when this lane has no more. Pass it back as cursor to continue.",
|
|
908
961
|
)
|
|
909
|
-
total_results: int = Field(
|
|
962
|
+
total_results: int | None = Field(
|
|
963
|
+
alias="totalResults",
|
|
964
|
+
description="Total number of ads matching the search. Null when the source cannot report an exact count.",
|
|
965
|
+
)
|
|
910
966
|
|
|
911
967
|
|
|
912
968
|
class FacebookAdsSearchAd(BaseModel):
|
|
@@ -2006,7 +2062,9 @@ class FacebookPostData(BaseModel):
|
|
|
2006
2062
|
alias="videoId",
|
|
2007
2063
|
description="Facebook video id of the post's reel or video, the id that appears in its /reel/<id> URL. Null when the post carries no video or this lane cannot read it.",
|
|
2008
2064
|
)
|
|
2009
|
-
views: int
|
|
2065
|
+
views: int | None = Field(
|
|
2066
|
+
description="Number of views on the post's video. Null when the source cannot report an exact count, for example when it gives only a rounded figure such as 14K."
|
|
2067
|
+
)
|
|
2010
2068
|
|
|
2011
2069
|
|
|
2012
2070
|
class FacebookPostCommentsData(BaseModel):
|
|
@@ -3377,7 +3435,7 @@ class FacebookNamespace:
|
|
|
3377
3435
|
Search public Facebook posts by keyword, optionally filtered by location,
|
|
3378
3436
|
and get structured post records (text, author, engagement).
|
|
3379
3437
|
|
|
3380
|
-
Price: $0.
|
|
3438
|
+
Price: $0.03 per request.
|
|
3381
3439
|
|
|
3382
3440
|
Example:
|
|
3383
3441
|
res = client.facebook.search_posts(limit=3, query="nike")
|
|
@@ -4232,7 +4290,7 @@ class AsyncFacebookNamespace:
|
|
|
4232
4290
|
Search public Facebook posts by keyword, optionally filtered by location,
|
|
4233
4291
|
and get structured post records (text, author, engagement).
|
|
4234
4292
|
|
|
4235
|
-
Price: $0.
|
|
4293
|
+
Price: $0.03 per request.
|
|
4236
4294
|
|
|
4237
4295
|
Example:
|
|
4238
4296
|
res = client.facebook.search_posts(limit=3, query="nike")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|