fetchproof.

/v1/threads/search

GET

Search by Keyword

Search public Threads posts by keyword, up to 10 results per request. Repeat searches over time to find new results. Date filtering is no longer supported.

Credit cost

Default: 1 credit

How charges are determined

Cost is decided per call, not per endpoint: the same operation can cost different amounts depending on what it returns.

A call that fails costs 0 credits. A result served from cache costs 0 credits.

`default` is the cost when no rule matches. Rules are evaluated in order and the first whose conditions all hold wins.

A `when` condition is one of: `param` (the request parameter is true), `outcome` (the classifier's outcome), `empty` / `nonEmpty` (a response field is empty and absent, or a non-empty array or string), `flag` (a response field is exactly true).

A cost of `{ perStartedMinute: n, of: [fields] }` is n x max(1, ceil(seconds / 60)), so even a short result bills at least one minute.

Cache supportNot specified in the published contract.
PaginationNo explicit pagination metadata in the published contract. Consult the parameters and response fields below.

Parameters

NameLocation / requiredSchema
query

Keyword to search for

query / required

string

trim

Set true for a trimmed response.

query / optional

boolean

Request examples

Replace placeholder values and supply your own API key. For operations with a request body, populate the body using the schema above.

cURL
curl --request GET 'https://api.fetchproof.com/v1/threads/search?query=YOUR_QUERY' \
  --header 'x-api-key: YOUR_API_KEY'
JavaScript
const response = await fetch("https://api.fetchproof.com/v1/threads/search?query=YOUR_QUERY", {
  method: 'GET',
  headers: { 'x-api-key': process.env.FETCHPROOF_API_KEY }
});
console.log(await response.text());
Python
import os
import requests

response = requests.get("https://api.fetchproof.com/v1/threads/search?query=YOUR_QUERY",
    headers={"x-api-key": os.environ["FETCHPROOF_API_KEY"]})
print(response.text)

Responses

200Success. Envelope: success / credits_remaining / credits_charged.

application/json

object

successrequired

boolean

credits_remainingrequired

integer

credits_chargedrequired

integer

postsrequired

array

Array items

object

idrequired

string

pkrequired

string

userrequired

object

friendship_statusrequired

null

pkrequired

string

profile_pic_urlrequired

string

usernamerequired

string

idrequired

string

transparency_labelrequired

null

transparency_productrequired

null

transparency_product_enabledrequired

boolean

is_verifiedrequired

boolean

text_post_app_is_privaterequired

boolean

has_onboarded_to_text_post_apprequired

boolean

full_nameoptional

string

biographyoptional

string

text_app_cover_photo_urloptional

null

text_app_biographyoptional

object

text_fragmentsrequired

object

fragmentsrequired

array

Array items

object

fragment_typerequired

string

link_fragmentrequired

null

mention_fragmentrequired

null

plaintextrequired

string

looking_for_recs_fragmentrequired

null

cashtag_fragmentrequired

null

inline_sticker_fragmentrequired

null

linkified_web_urlrequired

null

linkified_in_app_urlrequired

null

styling_inforequired

null

interop_messaging_user_fbidoptional

string

is_meta_ai_botoptional

boolean

hd_profile_pic_versionsoptional

null

text_post_app_infooptional

object

show_header_followrequired

boolean

is_markuprequired

boolean

custom_feed_preview_inforequired

null

link_preview_attachmentrequired

null

linked_inline_mediarequired

null

special_effects_enabled_strrequired

string

text_fragmentsrequired

object

fragmentsrequired

array

Array items

object

fragment_typerequired

string

link_fragmentrequired

null

mention_fragmentrequired

null

plaintextrequired

string

tag_fragmentoptional

null

linkified_web_urlrequired

null

styling_inforequired

null

looking_for_recs_fragmentoptional

null

cashtag_fragmentoptional

null

inline_sticker_fragmentoptional

null

linkified_in_app_urloptional

null

reshare_countrequired

integer

direct_reply_countrequired

integer

repost_countrequired

integer

quote_countrequired

integer

share_inforequired

object

quoted_attachment_author_attribution_allowedrequired

boolean

quoted_attachment_post_unavailablerequired

boolean

quoted_attachment_postrequired

null

quoted_postrequired

null

reposted_postrequired

null

can_quote_attachmentoptional

string

reply_to_authorrequired

null

reply_controlrequired

string

private_reply_partnerrequired

null

self_thread_countoptional

null

tag_headerrequired

null

root_post_authorrequired

null

pinned_post_inforequired

object

is_pinned_to_parent_postrequired

boolean

is_pinned_to_profilerequired

boolean

related_trends_inforequired

null

is_replyrequired

boolean

is_post_unavailablerequired

boolean

post_unavailable_reasonoptional

null

hush_inforequired

null

platform_podcast_episode_infooptional

null

platform_podcast_infooptional

null

link_preview_responseoptional

null

community_emoji_update_attachment_infooptional

null

community_champion_card_attachment_infooptional

null

community_founding_member_card_attachment_infooptional

null

gen_ai_reply_bot_on_media_deny_reasonoptional

string

idoptional

string

best_of_threads_attachment_infooptional

null

is_ghost_postoptional

boolean

self_thread_infooptional

null

is_spoiler_mediaoptional

boolean

reply_approval_infooptional

object

pending_reply_statusrequired

null

pending_reply_countrequired

null

ignored_reply_countrequired

null

tappable_elementsoptional

array

attachment_tombstone_infooptional

null

is_pinchedoptional

boolean

ghost_post_exp_time_msoptional

null

ghost_post_approximate_like_count_stroptional

null

ghost_post_reply_typeoptional

null

ghost_post_approximate_reply_count_stroptional

null

profile_update_attachment_infooptional

null

community_voting_progress_attachment_infooptional

null

snippet_attachment_infooptional

null

game_score_share_infooptional

null

public_view_count_card_attachment_infooptional

null

algo_tweaks_infooptional

null

can_replyoptional

boolean

system_status_messageoptional

null

community_badgeoptional

null

author_context_pilloptional

null

is_liked_by_root_authoroptional

boolean

post_tombstone_infooptional

null

best_of_threads_infooptional

null

is_paid_partnershipoptional

boolean

audiooptional

null

captionrequired

object

textrequired

string

pkrequired

string

has_translationrequired

null

can_translateoptional

null

text_translationoptional

null

caption_is_editedoptional

boolean

transcription_dataoptional

null

carousel_mediaoptional

array

Array items

object

accessibility_captionrequired

null

giphy_media_inforequired

null

has_audiorequired

boolean

is_dash_eligiblerequired

integer

video_dash_manifestrequired

string

image_versions2required

object

candidatesrequired

array

Array items

object

urlrequired

string

heightrequired

integer

widthrequired

integer

original_heightrequired

integer

original_widthrequired

integer

video_versionsrequired

array

Array items

object

typerequired

integer

urlrequired

string

__typenamerequired

string

usertagsrequired

null

number_of_qualitiesrequired

integer

text_app_music_inforequired

null

userrequired

object

pkrequired

string

idrequired

string

text_post_app_inforequired

object

share_inforequired

object

quoted_postrequired

null

tappable_elementsrequired

array

idrequired

string

ultra_carousel_card_typerequired

null

media_typerequired

integer

pkrequired

string

idrequired

string

coderequired

string

fbidrequired

string

coderequired

string

image_versions2optional

object

candidatesrequired

array

Array items

object

urlrequired

string

heightrequired

integer

widthrequired

integer

original_heightoptional

integer

original_widthoptional

integer

accessibility_captionoptional

null

video_versionsoptional

array

Array items

object

typerequired

integer

urlrequired

string

has_audiooptional

boolean

media_typeoptional

integer

caption_add_onoptional

null

giphy_media_infooptional

null

media_overlay_infooptional

null

sharing_friction_infooptional

object

should_have_sharing_frictionrequired

boolean

sharing_friction_payloadrequired

null

like_countrequired

integer

metaPlaceoptional

null

meta_placeoptional

null

gen_ai_detection_methodoptional

object

detection_methodrequired

string

taken_atrequired

integer

organic_tracking_tokenoptional

string

logging_info_tokenoptional

string

like_and_view_counts_disabledoptional

boolean

strong_id__optional

string

context__optional

object

idrequired

string

use_raw_logging_info_tokenrequired

boolean

logging_info_tokenrequired

string

usertagsoptional

null

is_dash_eligibleoptional

integer

number_of_qualitiesoptional

integer

video_dash_manifestoptional

string

text_app_music_infooptional

null

__isXDTTextAppMediaInterfaceoptional

string

has_viewer_savedoptional

null

text_app_glimmer_post_infooptional

null

original_lang_for_translationsoptional

null

ai_label_infooptional

null

injectedoptional

null

permalinkoptional

string

canonical_urloptional

null

fbidoptional

string

audienceoptional

null

detected_languageoptional

null

source_typeoptional

null

has_high_risk_gen_ai_inform_treatmentoptional

null

triage_commentsoptional

object

count_up_torequired

integer

urloptional

string

401Invalid or missing x-api-key
402No credits remaining
403Upstream denied (age gate, audience controls)
404Resource or endpoint not found
429Rate limited