Tweet Scraper — X search, $0.15 per 1,000 tweets avatar

Tweet Scraper — X search, $0.15 per 1,000 tweets

Pricing

$0.15 / 1,000 tweets

Go to Apify Store
Tweet Scraper — X search, $0.15 per 1,000 tweets

Tweet Scraper — X search, $0.15 per 1,000 tweets

Tweets from X (Twitter) search by keyword, URL, handle or filters, newest first. Same input and output as apidojo/tweet-scraper — switch by changing the actor id. Pay only per tweet.

Pricing

$0.15 / 1,000 tweets

Rating

0.0

(0)

Developer

V

V

Maintained by Community

Actor stats

0

Bookmarked

17

Total users

11

Monthly active users

11 days ago

Last modified

Categories

Share

Tweet Scraper — Twitter (X) search scraper, $0.15 per 1,000 tweets

Scrape tweets from X (Twitter) search: keywords, hashtags, search URLs, handles, advanced search operators, filters and date ranges. Newest first (Latest) or as X ranks them (Top). No X API key, no login, no proxy setup — pay only for the tweets you get.

  • $0.15 per 1,000 tweets — less than half of apidojo/tweet-scraper's $0.40.
  • Drop-in apidojo alternative — the same input fields and the same tweet object, so switching is changing one actor id.
  • Fast — 1,000 tweets in about 2½ minutes (measured on "netflix down", Latest).
  • Newest first, no gaps — a Latest search is read in parallel time windows and delivered in order, without holes between them.

Switching from apidojo/tweet-scraper

Change the actor id; keep your input and your parsing code.

import { ApifyClient } from 'apify-client'
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' })
// was: client.actor('apidojo/tweet-scraper')
const run = await client.actor('tweetpipe/tweet-scraper').call({
searchTerms: ['netflix down'],
maxItems: 1000,
sort: 'Latest',
})
const { items } = await client.dataset(run.defaultDatasetId).listItems()
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("tweetpipe/tweet-scraper").call(
run_input={"searchTerms": ["netflix down"], "maxItems": 1000, "sort": "Latest"}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items

What people use it for

  • Brand and product monitoring: every tweet mentioning you, newest first.
  • Outage and incident tracking: "is X down" spikes as they happen.
  • Sentiment analysis, market and crypto research, academic datasets.
  • Lead generation: who tweets about your niche, with their follower counts.
  • Feeding tweets into an LLM, a dashboard or a spreadsheet.

Input

{
"searchTerms": ["netflix down", "#outage lang:en"],
"maxItems": 1000,
"sort": "Latest"
}
  • searchTerms — any X search, advanced search operators included (from:, to:, "exact phrase", OR, -filter:replies, since:, …).
  • startUrls — X / Twitter search URLs (profile URLs are searched as from:handle).
  • twitterHandles — tweets from these accounts.
  • maxItems — stop after this many tweets (empty = no limit, within your maximum charge per run).
  • sort — Latest, Top, or Latest + Top.
  • Filters: tweetLanguage, onlyVerifiedUsers, onlyTwitterBlue, onlyImage, onlyVideo, onlyQuote, minimumRetweets, minimumFavorites, minimumReplies, author, inReplyTo, mentioning, geotaggedNear, withinRadius, geocode, placeObjectId, start, end.
  • includeSearchTerms adds a searchTerm field; customMapFunction reshapes each tweet.

Output

One dataset item per tweet — JSON, CSV, Excel or the API:

{
"type": "tweet",
"id": "2106518220979200001",
"url": "https://x.com/example/status/2106518220979200001",
"twitterUrl": "https://twitter.com/example/status/2106518220979200001",
"text": "is netflix down for anyone else?",
"retweetCount": 2,
"replyCount": 5,
"likeCount": 14,
"quoteCount": 0,
"viewCount": 830,
"bookmarkCount": 0,
"createdAt": "Sat Oct 03 22:54:15 +0000 2026",
"lang": "en",
"isReply": false,
"isRetweet": false,
"isQuote": false,
"author": {
"type": "user",
"userName": "example",
"url": "https://x.com/example",
"twitterUrl": "https://twitter.com/example",
"id": "303570001",
"name": "Example User",
"isBlueVerified": false,
"profilePicture": "https://pbs.twimg.com/profile_images/…_normal.jpg",
"followers": 210,
"following": 182
},
"entities": { "hashtags": [], "symbols": [], "urls": [], "user_mentions": [] }
}

Also on every tweet: inReplyToId, inReplyToUsername, conversationId, quoteId and the quoted tweet, source, extendedEntities (media), and the author's bio, location, account age and counts.

Pricing

Pay per result: $0.15 per 1,000 tweets, platform usage included. You are charged only for tweets in the dataset, and a run stops at your maximum charge. On Apify's free plan a run is a demo of up to 10 tweets; any paid plan gets full results.

FAQ

Do I need an X (Twitter) API key or account? No.

How many tweets can I get? As many as the search has: runs of a few thousand tweets finish in minutes, bigger ones take proportionally longer. Latest goes back as far as X search does; Top returns what X's Top tab shows (usually a few hundred).

Is scraping X legal? This actor reads public tweets only. Check the rules that apply to how you use the data (for example GDPR for personal data).

Limits

  • Search only in this version: list URLs, single-tweet URLs and reply threads are not supported yet.