Apify API
Search Apify Store actors, start actor runs, and fetch results over x402 and MPP.
The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.
Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.
Accepts
The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.
Pay 0.01 USDC on Base to 0x23d9…c8411. The signed payment is good for 5 minutes.
- Paid to
- 0x23d9…c8411
- USD Coin contract
- 0x8335…02913
- Payment window
- 5 minutes
- As published
- 10000 smallest units
The catalog’s raw entry
[
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x23d931f95831cee50b5f5edf4d0e88270f6c8411",
"amount": "10000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
]Extensions
{
"bazaar": {
"info": {
"input": {
"body": {},
"type": "http",
"method": "POST",
"bodyType": "json"
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"type": "object",
"required": [
"maxItems",
"queryType",
"filter:blue_verified",
"filter:nativeretweets",
"include:nativeretweets",
"filter:replies",
"filter:quote",
"filter:has_engagement",
"min_retweets",
"min_faves",
"min_replies",
"-min_retweets",
"-min_faves",
"-min_replies",
"filter:media",
"filter:twimg",
"filter:images",
"filter:videos",
"filter:native_video",
"filter:vine",
"filter:consumer_video",
"filter:pro_video",
"filter:spaces",
"filter:links",
"filter:mentions",
"filter:news",
"filter:safe",
"filter:hashtags"
],
"properties": {
"@": {
"type": "string",
"description": "Mentioning a particular @username. Combine with -from:username to get only mentions.Eg.https://twitter.com/search?q=%40cern%20-from%3Acern&src=typed_query&f=live"
},
"to": {
"type": "string",
"description": "Replying to a particular @username. eg. \"NASA\".https://twitter.com/search?q=%23MoonTunes%20to%3Anasa&src=typed_query&f=live"
},
"url": {
"type": "string",
"description": "urls are tokenized and matched, works very well for subdomains and domains, not so well for long urls, depends on url. Youtube ids work well. Works for both shortened and canonical urls, eg: gu.com shortener for theguardian.com. When searching for Domains with hyphens in it, you have to replace the hyphen by an underscore (like url:t_mobile.com) but underscores _ are also tokenized out, and may not match.Eg. https://twitter.com/search?q=url%3Agu.com&src=typed_query&f=live"
},
"from": {
"type": "string",
"description": "Sent by a particular @username e.g. \"NASA\" .https://twitter.com/search?q=dogs%20from%3Anasa&src=typed_query&f=live"
},
"lang": {
"enum": [
"am",
"ar",
"bg",
"bn",
"bo",
"ca",
"ch`",
"cs",
"da",
"de",
"dv",
"el",
"en",
"es",
"et",
"fa",
"fi",
"fr",
"gu",
"hi",
"ht",
"hu",
"hy",
"in",
"is",
"it",
"iu",
"iw",
"ja",
"ka",
"km",
"kn",
"ko",
"lo",
"lt",
"lv",
"ml",
"my",
"ne",
"nl",
"no",
"or",
"pa",
"pl",
"pt",
"ro",
"ru",
"si",
"sk",
"sl",
"sv",
"ta",
"te",
"th",
"tl",
"tr",
"uk",
"ur",
"vi",
"zh"
],
"type": "string",
"description": "Search for tweets in specified language, not always accurate.Language is specified as https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes."
},
"list": {
"type": "string",
"description": "Tweets from members of this public list. Use the list ID from the API or with urls like twitter.com/i/lists/715919216927322112. List slug is for old list urls like twitter.com/esa/lists/astronauts."
},
"near": {
"type": "string",
"description": "Geotagged in this place. Also supports Phrases, eg: near:\"The Hague\" . eg https://twitter.com/search?q=near%3A%22The%20Hague%22&src=typed_query&f=live"
},
"max_id": {
"type": "string",
"description": "Before a specified tweet ID. Combine with a \"Since ID\" operator for dates between. Maybe easier to use than until_time above.Eg.https://twitter.com/search?q=since_id%3A1138872932887924737%20max_id%3A1144730280353247233%20%23nasamoontunes&src=typed_query&f=live"
},
"within": {
"type": "string",
"description": "Within specific radius of the \"near\" operator, to apply a limit. Can use km or mi. e.g. fire near:san-francisco within:10km.eg:https://twitter.com/search?q=fire%20near%3Asan-francisco%20within%3A10km&src=typed_query&f=live"
},
"geocode": {
"type": "string",
"description": "Search within a specific radius of a coordinate. E.g. to get tweets 10km around twitters hq, use geocode:37.7764685,-122.4172004,10km.Eg.https://twitter.com/search?q=geocode%3A37.7764685%2C-122.4172004%2C10km&src=typed_query&f=live"
},
"maxItems": {
"type": "integer",
"default": 200,
"maximum": 1000000,
"minimum": 1,
"description": "Maximum number of items that you want as output. When searchTerms is set, this field means the maximum number of items for each search term.The minimum value is 20.The max_items parameter defines the minimum number of items to return, not a strict limit.Due to the pagination behavior of Twitter/X, individual pages may contain more items than requested. As a result, the final response may slightly exceed the specified max_items value.However, the number of returned items will never be lower than the requested amount."
},
"since_id": {
"type": "string",
"description": "On or after a specified tweet ID. Combine with the \"Until ID\" operator for dates between. Maybe easier to use than since_time above.Eg.https://twitter.com/search?q=since_id%3A1138872932887924737%20max_id%3A1144730280353247233%20%23nasamoontunes&src=typed_query&f=live"
},
"tweetIDs": {
"type": "array",
"items": {
"type": "string"
},
"description": "Enter the tweet ids you want to scrape. Case1: 1846987139428634858,1858743654778892784. Note: When this field has a value, all other filter conditions will be ignored."
},
"card_name": {
"enum": [
"poll2choice_text_only",
"poll3choice_text_only",
"poll4choice_text_only",
"poll2choice_image",
"poll3choice_image",
"poll4choice_image"
],
"type": "string",
"description": "Tweets containing polls. For polls containing 2, 3, 4 choices, or image Polls.Eg.https://twitter.com/search?q=lang%3Aen%20card_name%3Apoll4choice_text_only%20OR%20card_name%3Apoll3choice_text_only%20OR%20card_name%3Apoll2choice_text_only&src=typed_query&f=live"
},
"min_faves": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Minimum number of favorites.Eg.https://twitter.com/search?q=min_faves%3A5000%20nasa&src=typed_query&f=live"
},
"queryType": {
"enum": [
"Latest",
"Top",
"Photos",
"Videos"
],
"type": "string",
"default": "Latest",
"description": "This field determines the type of Twitter search to be performed. The options are 'Latest', 'Top', 'Photos', 'Photos', Videos'. 'Latest' will return the most recent tweets. 'Top' will return the most popular or relevant tweets according to Twitter's algorithm. 'Photos' will return tweets containing photos. 'Videos' will return tweets containing photos videos."
},
"-min_faves": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "A maximum number of Faves.Eg.https://twitter.com/search?q=-min_faves%3A5000%20nasa&src=typed_query&f=live"
},
"since_time": {
"type": "string",
"description": "On or after a specified unix timestamp in seconds. Combine with the \"Until Time\" operator for dates between. Maybe easier to use than since_id below.Eg.https://twitter.com/search?q=since_time%3A1561720321%20until_time%3A1562198400%20%23nasamoontunes&src=typed_query&f=live"
},
"until_time": {
"type": "string",
"description": "Before a specified unix timestamp in seconds. Combine with a \"Since Time\" operator for dates between. Maybe easier to use than max_id below.Eg.https://twitter.com/search?q=since_time%3A1561720321%20until_time%3A1562198400%20%23nasamoontunes&src=typed_query&f=live"
},
"filter:news": {
"type": "boolean",
"default": false,
"description": "Containing link to a news story. Combine with a list operator to narrow the user set down further. Matches on a list of Domains.(See Note for full list :https://github.com/igorbrigadir/twitter-advanced-search?tab=readme-ov-file#news-sites)"
},
"filter:safe": {
"type": "boolean",
"default": false,
"description": "Excluding NSFW content. Excludes content that users have marked as \"Potentially Sensitive\". Doesn't always guarantee SFW results."
},
"filter:vine": {
"type": "boolean",
"default": false,
"description": "Vine videos.Eg.https://twitter.com/search?q=filter%3Avine%20%23nasamoontunes&src=typed_query&f=live"
},
"min_replies": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Minimum number of replies.Eg.https://twitter.com/search?q=min_replies%3A5000%20nasa&src=typed_query&f=live"
},
"searchTerms": {
"type": "array",
"items": {
"type": "string"
},
"description": "Enter the search terms you want to scrape. Each term should follow Twitter's search syntax. Multiple terms will be processed separately. If set, this field will override the twitterContent field,and the field 'Maximum number of items on output' means the maximum number of items for each search term.please ref:https://github.com/igorbrigadir/twitter-advanced-search for more use case"
},
"-min_replies": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "A maximum number of Replies.Eg.https://twitter.com/search?q=-min_replies%3A5000%20nasa&src=typed_query&f=live"
},
"filter:links": {
"type": "boolean",
"default": false,
"description": "Only containing some URL, includes media. use -filter:media for urls that aren't media.Eg.https://twitter.com/search?q=filter%3Alinks%20%23nasamoontunes&src=typed_query&f=live"
},
"filter:media": {
"type": "boolean",
"default": false,
"description": "Filter tweets with media,All media types.Eg.https://twitter.com/search?q=filter%3Amedia%20%23nasamoontunes&src=typed_query&f=live"
},
"filter:quote": {
"type": "boolean",
"default": false,
"description": "Contain Quote Tweets.Eg.https://twitter.com/search?q=from%3Anasa%20filter%3Aquote&src=typed_query&f=live"
},
"filter:twimg": {
"type": "boolean",
"default": false,
"description": "Native Twitter images (pic.twitter.com links).Eg.https://twitter.com/search?q=filter%3Atwimg%20%23nasamoontunes&src=typed_query&f=live"
},
"min_retweets": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Minimum number of retweets.Eg.https://twitter.com/search?q=min_retweets%3A5000%20nasa&src=typed_query&f=live"
},
"-min_retweets": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "A maximum number of Retweets.Eg.https://twitter.com/search?q=-min_retweets%3A5000%20nasa&src=typed_query&f=live"
},
"filter:images": {
"type": "boolean",
"default": false,
"description": "Filter tweets with images.Eg.https://twitter.com/search?q=filter%3Aimages%20%23nasamoontunes&src=typed_query&f=live"
},
"filter:spaces": {
"type": "boolean",
"default": false,
"description": "Twitter Spaces only.Eg.https://twitter.com/search?q=filter%3Aspaces%20%23nasamoontunes&src=typed_query&f=live"
},
"filter:videos": {
"type": "boolean",
"default": false,
"description": "All video types, including native Twitter video and external sources such as Youtube.Eg.https://twitter.com/search?q=filter%3Avideos%20%23nasamoontunes&src=typed_query&f=live"
},
"filter:replies": {
"type": "boolean",
"default": false,
"description": "Tweet is a reply to another Tweet. good for finding conversations, or threads if you add or remove to:user.eg.https://twitter.com/search?q=from%3Anasa%20filter%3Areplies%20-to%3Anasa&src=typed_query&f=live"
},
"quoted_user_id": {
"type": "string",
"description": "Search for all quotes of a specific user, by numeric User ID.Eg.https://twitter.com/search?q=quoted_user_id%3A11348282&src=typed_query&f=live"
},
"twitterContent": {
"type": "string",
"description": "Enter the content of the tweet you want to scrape.eg \"from:same since:2021-02-17_00:00:00_UTC until:2021-03-03_23:59:59_UTC\" .please ref:https://github.com/igorbrigadir/twitter-advanced-search for more use case"
},
"conversation_id": {
"type": "string",
"description": "Tweets that are part of a thread (direct replies and other replies).Eg.https://twitter.com/search?q=conversation_id%3A1140437409710116865%20lang%3Aen&src=typed_query&f=live"
},
"filter:hashtags": {
"type": "boolean",
"default": false,
"description": "Containing any sort of hashtags.Eg.https://twitter.com/search?q=filter%3Ahashtags%20%23nasamoontunes&src=typed_query&f=live"
},
"filter:mentions": {
"type": "boolean",
"default": false,
"description": "Containing any sort of @mentions.Eg.https://twitter.com/search?q=filter%3Amentions%20%23nasamoontunes&src=typed_query&f=live"
},
"quoted_tweet_id": {
"type": "string",
"description": "Search for quotes of a specific tweet.Eg.https://twitter.com/search?q=quoted_user_id%3A11348282&src=typed_query&f=live"
},
"filter:pro_video": {
"type": "boolean",
"default": false,
"description": "Twitter pro video (Amplify) only.Eg.https://twitter.com/search?q=filter%3Apro_video%20%23nasamoontunes&src=typed_query&f=live"
},
"filter:native_video": {
"type": "boolean",
"default": false,
"description": "All Twitter-owned video types (native video, vine, periscope).Eg.https://twitter.com/search?q=filter%3Anative_video%20%23nasamoontunes&src=typed_query&f=live"
},
"filter:blue_verified": {
"type": "boolean",
"default": false,
"description": "Filter tweets from blue verified users only.However, I found that using filter:blue_verified alone causes issues and needs to be used together with filter:verified, possibly due to a Twitter bug.Eg.https://twitter.com/search?q=filter%3Ablue_verified%20-filter%3Averified&src=typed_query&f=live"
},
"filter:consumer_video": {
"type": "boolean",
"default": false,
"description": "Twitter native video only.Eg.https://twitter.com/search?q=filter%3Aconsumer_video%20%23nasamoontunes&src=typed_query&f=live"
},
"filter:has_engagement": {
"type": "boolean",
"default": false,
"description": "Has some engagement (replies, likes, retweets). Can be negated to find tweets with no engagement. Note all of these are mutually exclusive with filter:nativeretweets or include:nativeretweets, as they apply to the retweet, not the original tweet, so they won't work as expected.Eg.https://twitter.com/search?q=breaking%20filter%3Anews%20-filter%3Ahas_engagement&src=typed_query&f=live"
},
"filter:nativeretweets": {
"type": "boolean",
"default": false,
"description": "Only retweets created using the retweet button. Works well combined with from: to show only retweets. Only works within the last 7-10 days or so.Eg.https://twitter.com/search?q=from%3Anasa%20filter%3Anativeretweets&src=typed_query&f=live"
},
"include:nativeretweets": {
"type": "boolean",
"default": false,
"description": "Native retweets are excluded by default. This shows them. In contrast to filter:, which shows only retweets, this includes retweets in addition to other tweets. Only works within the last 7-10 days or so.Eg.https://twitter.com/search?q=from%3Anasa%20include%3Anativeretweets%20&src=typed_query&f=live"
}
},
"description": "Normalized actor input. See field descriptions for the simplified shape; native Apify input also accepted (passed through).",
"additionalProperties": {}
},
"options": {
"type": "object",
"properties": {
"build": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"memory": {
"type": "integer",
"maximum": 32768,
"minimum": 128
},
"maxItems": {
"type": "integer",
"maximum": 100000,
"minimum": 1
}
},
"description": "Optional Apify run options.",
"additionalProperties": false
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
}
}
}
}
}Provenance
- Seen in the source catalog
- 2026-09-09 09:49Z
- Last indexed by Roundhouse
- 2026-09-25 09:10Z
- Last enriched (probe, favicon, geo)
- 2026-09-14 05:45Z
- x402 version
- 2
- Max timeout
- 300s
- Liveness probe
- HTTP 405
Hand this page to an agent
Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.
GET api.roundhouseai.io/v0/endpoints
This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 30 snapshots so far. Verified volume counts only settlements with an on-chain EIP-3009 marker.
Show the promptHide the prompt
Using Roundhouse, look up the x402 service Apify API and tell me whether it is worth paying: what a call costs, whether the endpoint answered when last probed, and what its payment record actually shows. curl -s 'https://api.roundhouseai.io/v0/endpoints?q=Apify%20API' curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>' Then call it: read the price from the live 402 at https://stableapify.dev/api/actors/kaitoeasyapi/twitter-x-data-tweet-scraper-pay-per-result-cheapest/call, never from a cached figure, and pay with an x402 client. The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except /v0/unified* and /v0/endpoints. Mint a personal key for $0.01 at GET https://api.roundhouseai.io/v0/test/x402, or use an organization key from https://roundhouseai.io/dashboard/team. If you do not have Roundhouse tools or skills installed, read https://roundhouseai.io/skill.md first — it is the whole procedure.