IFTTT Alternatives in 2026: Which Can Still Trigger on a New Twitter (X) Post

By TwitterAPI.io Team•17 min read
Diagram of IFTTT alternatives for a new-tweet trigger. IFTTT: X service live with 12 triggers, 2 queries, 3 actions, checks every 60, 15 or 5 minutes, search limited to 10 tweets per check. Zapier: Twitter integration stopped Aug 31, 2023. Make: X app discontinued May 30, 2025. n8n: X node with post, reply, search, like, retweet and DM but no trigger. Activepieces: Twitter piece with 0 triggers and 2 actions. Pipedream: Workflows shut down Mar 31, 2027. Arrows lead to the API route: poll GET /twitter/tweet/advanced_search with since_time, an empty check costs $0.00015, or a filter rule via /oapi/tweet_filter/add_rule pushes to your webhook; $0.15 per 1,000 tweets vs $5 per 1,000 post reads on the X API rate card.
Which automation platforms can still fire on a new X post, and the API route that works on all of them. Status from each vendor's own pages; study numbers collected in 2026.
TL;DR
  • IFTTT still has X: its X (Twitter) service page lists 12 triggers (new tweet by you, by a specific user, from search, new mention, new follower and more), 2 queries and 3 actions. Polling runs every hour on Free, 15 minutes on Starter, 5 minutes on Pro and Pro+.
  • IFTTT prices: Free $0 (1,000 credits a month), Starter $2.99/month or $2.09/month billed annually, Pro $7.99/month or $5.49/month annually, Pro+ $19.99/month or $13.99/month annually.
  • Alternatives and X: Zapier's Twitter integration stopped on August 31, 2023; Make's X app stopped on May 30, 2025; n8n's X node and Activepieces' Twitter piece only post (no new-tweet trigger); Pipedream Workflows shuts down on March 31, 2027.
  • The 10-tweet cap is real at busy keywords: IFTTT's New tweet from search is documented as limited to 10 tweets per check. On an hourly check, 42.4% of "n8n" tweets and 28.9% of "home assistant" tweets fell beyond the first 10 in their hour; at 15 minutes it was 2.2% and 0%.
  • Account triggers are mostly empty checks: for a feed of 5 organization accounts (8.42 posts a day), 76.3% of hourly and 97.2% of 5-minute checks found nothing; the average wait from post to the next check was 32.1, 8.3 and 2.6 minutes at 60, 15 and 5 minutes.
  • The API route on any platform: a schedule plus GET /twitter/tweet/advanced_search with since_time: costs $0.00015 per empty check and $0.15 per 1,000 tweets returned: about $1.30 a month for that 5-account feed at 5 minutes. The official X API rate card is $0.005 per post read ($5 per 1,000), about 33x more.

Most lists of IFTTT alternatives compare app counts and free tiers. This one starts from the reason many people search for one: an automation that should fire when a new post appears on X (Twitter), such as saving tweets to a sheet, forwarding mentions to Slack, or watching a keyword. We read each platform's own pages this session to see which can still do that, then measured what a polling trigger actually sees at IFTTT's check intervals.

It is not a general platform-by-platform review. For the full Zapier comparison see our Zapier alternatives guide, for license and self-hosting questions see n8n alternatives, for three-way pricing units see n8n vs Zapier vs Make, and for Pipedream's plans see the Pipedream pricing page; all are linked below. Here we cover what is specific to IFTTT: its X triggers, its plans and polling speeds, the 10-tweets-per-check search limit, and how to rebuild the same trigger anywhere.

The data: 540 recent posts from six organization accounts (@IFTTT, @zapier, @n8n_io, @make_hq, @activepieces and @NASA) and 1,201 tweets from four keyword searches (n8n, zapier, ifttt, home assistant), collected in 2026 with 92 read requests that cost about $0.26.

Tweets beyond the first 10 in an hourly check, keyword "n8n"

42.4% of 320 tweets (13.7 an hour), collected in 2026; 0% at 5-minute checks.

01 — Section

Does IFTTT still work with Twitter (X)?

Yes. Many articles say IFTTT dropped Twitter after X's 2023 API pricing change, but IFTTT's own X (Twitter) service page (ifttt.com/twitter) lists 17 live triggers, queries and actions this session. If X is your only reason to leave IFTTT, check this list first.

TypeNameWhat IFTTT says it does
TriggerNew tweet by youfires every time you post a new tweet
TriggerNew tweet by a specific userfires every time the user you specify tweets
TriggerNew tweet from searchfires on each new tweet matching your query; limited to 10 tweets per check, protected tweets not returned
TriggerNew mention of youfires every time you are @mentioned
TriggerNew reply to your tweet, New follower, New liked tweet by youas named
TriggerNew tweet by you with hashtag, New link by you, New photo or video by youas named
TriggerNew tweet by you in area, New tweet by anyone in areatweets at a location you specify
QueryGet your account stats, Get a user's profilefollower, following, tweet and listed counts; any public profile
ActionPost a tweet, Post a tweet with image, Post a tweet with videoposts to your connected account; affiliate URLs cause an action error

Every X trigger is a polling trigger. IFTTT's page says polling Applets run after IFTTT checks the service and finds a new event, and that these checks happen every hour on Free, every 15 minutes on Starter and every 5 minutes on Pro and Pro+. So a free Applet watching an account can fire up to an hour after the post.

What IFTTT costs. The plans page (ifttt.com/plans) lists Free at $0 with 1,000 credits a month, Starter at $2.99/month billed monthly or $2.09/month billed annually ($25.08 a year) with 5,000 credits, Pro at $7.99/month or $5.49/month annually ($65.88 a year) with 20,000 credits, and Pro+ at $19.99/month or $13.99/month annually ($167.88 a year) with 100,000 credits and multiple accounts per service. Credits pay for Applet runs, MCP usage and AI features. The plans page does not publish how many credits one Applet run uses; IFTTT shows the cost per step in the Applet builder.

So the honest reasons to look elsewhere are not that X is gone. They are the polling delay on cheaper plans, the 10-tweet cap on search triggers, single-step logic compared with branching workflow tools, and wanting to self-host or run code.

02 — Section

IFTTT alternatives compared: price, free tier and X (Twitter) support

Prices and X status below come from each vendor's own pricing, help or integration page, fetched this session. Where a page did not show a number, the table says so.

PlatformFree tierEntry paid planNative new-tweet triggerX actions
IFTTT1,000 credits a month, hourly checksStarter $2.99/month ($2.09 billed annually), 15-minute checksYes: by user, from search, mentionsPost a tweet, with image or video
Zapier100 tasks a month, 15-minute pollingPro $29.99/month ($19.99 billed annually), 750 tasks, 2-minute pollingNo: Twitter integration stopped August 31, 2023No
Make1,000 credits a monthnot shown in the page text we could fetchNo: X app stopped May 30, 2025No
n8nself-hosted Community editionStarter 20€/month billed annually, 2,500 executionsNo X trigger nodePost or reply, delete, search, like, retweet, DM
Activepieces1,000 credits a month, no card$20/month (10x the Free plan's credits), extra credits $0.007 eachNo: Twitter piece has 0 triggersCreate tweet, reply
Pipedream$0 in developmentStartup $99/month billed annually or $150/month monthlyWorkflows shuts down March 31, 2027Connect actions only

Zapier. Zapier's Twitter FAQ page says its Twitter integration stopped working effective August 31, 2023, after new Zaps were blocked from August 18, 2023, because of X's API policy and pricing. Zapier still runs any HTTP API through Webhooks by Zapier, a premium app: its Retrieve Poll trigger fires when a URL returns new entries, and Catch Hook fires when something POSTs to a Zapier URL. Either can carry tweets from an X data API.

Make. Make's help center says it removed the X (formerly Twitter) app on April 3, 2025 and that existing scenarios stopped working on May 30, 2025, citing X's API policy requirements and pricing. The HTTP > Make a request module is the replacement; our Make.com Twitter integration guide has an importable blueprint.

n8n. n8n's X node documentation lists operations only: create a direct message, create or reply to a tweet, delete, search, like and retweet, and there is no X trigger node. A Schedule Trigger plus the node's Search operation, or an HTTP Request node to an X data API, plays the trigger role. n8n bills cloud plans per execution (one run of the whole workflow), Starter at 20€/month billed annually for 2,500 executions and Pro at 50€/month billed annually for 10,000.

Activepieces. The Twitter piece page lists 0 triggers and 2 actions (create a tweet, reply), authenticated with your own credentials. The Free plan is $0 with 1,000 credits a month and no card; the next plan is $20/month.

Pipedream. Pipedream's docs say Workflows and String shut down on March 31, 2027: Workflows is in maintenance mode, takes no new signups or subscriptions, and its data is deleted by April 30, 2027. Pipedream's pricing now covers Connect, its integration layer for apps and AI agents (Startup $99/month billed annually, $150/month monthly, 10,000 usage credits). It is no longer a place to start a new IFTTT replacement.

03 — Section

Free IFTTT alternatives

If the goal is to pay nothing, the free tiers differ in what they count, so compare them by how many runs a simple two-step automation gets.

IFTTT Free. 1,000 credits a month, unlimited Applets, hourly polling. Enough for a handful of low-volume Applets; the hourly check is the real limit for anything time-sensitive.

n8n Community edition. Free to self-host: you pay for the server and you run the updates, and the cloud plans start at 20€/month billed annually for 2,500 executions if you would rather not.

Activepieces. The core is open source and the cloud Free plan gives 1,000 credits a month with no card and no time limit. It is the closest open-source match to IFTTT's simple trigger-then-action model.

Make Free. 1,000 credits a month. A scheduled scenario uses credits on its runs whether or not anything new is found, so a 15-minute schedule (2,880 runs a month) outgrows the Free plan quickly.

Zapier Free. 100 tasks a month and 15-minute polling. Webhooks by Zapier, the route to X data, is a premium app, so it is not on the Free plan.

A script on cron. For an X trigger specifically, a 60-line Python script (at the end of this page) on any always-on machine or a scheduled CI job is free to run; you only pay for the X data it reads. At 5-minute checks on the 5-account feed we measured, that is about $1.30 a month, almost all of it the floor of empty checks.

04 — Section

The 10-tweets-per-check limit: what a search trigger would not catch

IFTTT's New tweet from search trigger is documented as limited to 10 tweets per check. That is fine for a quiet keyword and a real gap for a busy one, and the gap depends on the check interval, which depends on your plan. IFTTT's page does not say whether tweets beyond the first 10 are picked up on the next check, so we measured how many tweets would arrive beyond 10 in each window and leave the interpretation to you.

We searched four keywords about automation tools with -filter:retweets, newest first, and counted tweets per aligned 5-, 15- and 60-minute window across each sample's span. "n8n" ran at 13.7 tweets an hour, "home assistant" at 8.5, "zapier" at 6.7 and "ifttt" at 4.8.

KeywordTweets an hourHourly windows over 10 tweetsTweets beyond 10, hourlyTweets beyond 10, 15 min
n8n13.760.9%42.4%2.2%
home assistant8.535.7%28.9%0.0%
zapier6.712.2%7.6%0.0%
ifttt4.85.4%2.6%0.0%

Reading it. At hourly checks (IFTTT Free), 60.9% of hours for "n8n" held more than 10 tweets, with a busiest hour of 30, so 42.4% of its tweets sat beyond the first 10 of their hour. At 15-minute checks (Starter) that drops to 2.2%, and at 5 minutes no window in any of the four samples exceeded 10 (the busiest 5-minute window held 10).

Rule of thumb. If a keyword runs above roughly 5 tweets an hour, an hourly 10-tweet check is the wrong tool; a 15-minute check covers keywords up to about 10 an hour in our sample, and above that you want a trigger with no per-check cap. A search through an API you call yourself pages with next_cursor until it has every new tweet, 20 per page.

Who is talking. The samples are noisy in ways an automation should filter: 43.4% of "n8n" tweets and 36.4% of "zapier" tweets were replies, and only 65.9% of "n8n" tweets were in English. Add -filter:replies and lang:en to the query if you only want original posts in English.

Grouped bar chart of the share of tweets beyond the first 10 in their check window, for four keyword searches at 5-minute, 15-minute and hourly checks. n8n, 13.7 tweets an hour: 0% at 5 minutes, 2.2% at 15 minutes, 42.4% hourly. home assistant, 8.5 an hour: 0%, 0%, 28.9%. zapier, 6.7 an hour: 0%, 0%, 7.6%. ifttt, 4.8 an hour: 0%, 0%, 2.6%.
Share of tweets beyond the first 10 in each check window, 1,201 search tweets collected in 2026. Busy keywords overflow an hourly check; 5-minute checks never exceeded 10.
05 — Section

Account triggers: empty checks, delay and cost at each interval

The other common X Applet watches accounts: New tweet by a specific user. Organization accounts post far less than a keyword. In the 100 most recent posts of each account, @IFTTT posted 1.41 times a day, @zapier 2.74, @n8n_io 1.25, @make_hq 0.87 and @NASA 2.82; @activepieces returned only 40 posts, the newest 240 days before collection, so we left it out of the combined feed.

AccountPosts a dayMedian gapEmpty checks, hourlyEmpty checks, 15 minEmpty checks, 5 min
@NASA2.823.4 h89.4%97.2%99.0%
@zapier2.742.1 h91.3%97.3%99.1%
@IFTTT1.417.0 h94.5%98.6%99.5%
@n8n_io1.259.0 h94.9%98.7%99.6%
@make_hq0.8722.8 h97.1%99.3%99.7%
All 5 in one trigger8.4276.3%92.1%97.2%

Delay is the price of a slow plan. Measured from each post to the next check tick, the average wait was 32.1 minutes at hourly checks, 8.3 at 15 minutes and 2.6 at 5 minutes (mean over the five accounts). That is IFTTT's Free, Starter and Pro intervals; Zapier's polling is 15 minutes on Free, 2 minutes on Pro and 1 minute on Team, but Zapier has no X trigger to poll.

Empty checks are the cost of a fast one. For all five accounts in one trigger (8.42 posts a day across a 32-day common window), 97.2% of 5-minute checks found nothing. On a platform that bills per run (Make credits, n8n executions, Activepieces credits), every one of those empty runs counts.

What the X data costs if you poll yourself. With /twitter/tweet/advanced_search and a since_time: cursor, an empty check costs the 15-credit minimum, $0.00015, and each tweet returned $0.00015. For this feed that is about $1.30 a month at 5 minutes (8,640 checks), $0.44 at 15 minutes and $0.12 hourly. A keyword feed adds the tweets themselves: at the "n8n" rate measured above, about 9,864 tweets a month, $1.55 a month at 15-minute checks. The official X API's pay-per-usage rate card charges $0.005 per post read, so the same 9,864 tweets would be about $49.32 a month there ($5 vs $0.15 per 1,000, about 33x), and it needs your own X developer app.

Two bar charts for a polling new-tweet-by-user trigger watching @IFTTT, @zapier, @n8n_io, @make_hq and @NASA, 269 posts in a 32-day window. Left: share of checks that find no new post, 97.2% at 5 minutes, 92.1% at 15 minutes, 76.3% hourly, with monthly polling costs of $1.30, $0.44 and $0.12. Right: average wait from post to next check, 2.6, 8.3 and 32.1 minutes.
Empty checks and average added delay at IFTTT's three check intervals for a 5-account organization feed, collected in 2026.
06 — Section

Rebuild the IFTTT X trigger on n8n, Zapier, Make or Activepieces

Every alternative can run an HTTP request on a schedule, and that is all a polling trigger is. The pattern is the same everywhere: a schedule (5 or 15 minutes), one GET request, a step that splits the response's tweets array into items, then your actions.

The request. GET https://api.twitterapi.io/twitter/tweet/advanced_search with header X-API-Key, queryType=Latest, and a query such as from:NASA OR from:zapier since_time:<unix seconds> (account trigger) or n8n -filter:retweets lang:en since_time:<unix seconds> (search trigger). The response has a top-level tweets array (20 per page), has_next_page and next_cursor. Each tweet carries id, url, text, createdAt, likeCount, isReply, lang and an author object with userName, name and followers, the same ingredients IFTTT exposes and more.

n8n. Schedule Trigger, then an HTTP Request node configured as below, then Split Out on tweets. Store the last tweet id with a Code node or use a since_time equal to the schedule interval plus a small overlap, and de-duplicate on id.

Zapier. Webhooks by Zapier's Retrieve Poll trigger (which fires when a request to a URL returns new entries) points at the same URL with the key as a header. It is a premium app, so it needs a paid plan.

Make. HTTP > Make a request on a schedule, then an Iterator over the tweets array. Our Make.com Twitter integration guide has the full blueprint.

Activepieces. A Schedule trigger plus the HTTP piece with the same request, then a loop over tweets.

Or let the trigger come to you. Instead of polling from the platform, create a tweet filter rule on twitterapi.io: it checks your query every interval_seconds (0.05 to 86,400 seconds, default 60) and POSTs matching tweets to the webhook URL set in your dashboard, which can be an n8n Webhook node, a Zapier Catch Hook or an Activepieces webhook trigger. Your automation then runs only when there is a tweet, so empty checks stop using platform credits or executions. The curl commands are in the next section.

json
// n8n (or Activepieces) replacement for IFTTT's "New tweet from search":
// Schedule Trigger (every 15 min) -> HTTP Request -> Split Out "tweets" -> your action.
// HTTP Request node settings:
{
  "method": "GET",
  "url": "https://api.twitterapi.io/twitter/tweet/advanced_search",
  "sendHeaders": true,
  "headerParameters": { "parameters": [ { "name": "X-API-Key", "value": "={{ $env.TWITTERAPI_IO_API_KEY }}" } ] },
  "sendQuery": true,
  "queryParameters": { "parameters": [
    { "name": "query", "value": "=n8n -filter:retweets since_time:{{ Math.floor(Date.now() / 1000) - 900 }}" },
    { "name": "queryType", "value": "Latest" }
  ] }
}
// The response's top-level "tweets" array holds up to 20 tweets per page;
// if has_next_page is true, request again with cursor = next_cursor.
07 — Section

The push route: a filter rule that calls your webhook

Three facts from the endpoint documentation matter. POST /oapi/tweet_filter/add_rule takes tag (your label, up to 255 characters), value (the query, same syntax as the search) and interval_seconds. A new rule is not active: POST /oapi/tweet_filter/update_rule sets is_effect to 1 (it defaults to 0), and it needs rule_id, tag, value and interval_seconds sent again. GET /oapi/tweet_filter/get_rules lists your rules.

What arrives. Each push is a JSON POST with event_type, rule_id, rule_tag, rule_value, a millisecond timestamp and a tweets array of the same tweet objects the search returns. It carries your API key in an x-api-key header, so check it before accepting the request, and answer 200 quickly.

What it costs. Each check of the rule bills at least the $0.00015 minimum, found something or not, plus $0.00015 per tweet delivered. At interval_seconds: 300 that matches the 5-minute polling floor of $1.30 a month; at 60 seconds it is $6.48. The difference from polling is where the empty checks happen: on twitterapi.io's side, not as runs on your automation platform.

When you also need to post. IFTTT's Post a tweet action has an API equivalent too, but it acts as your X account: one /twitter/user_login_v2 login ($0.10, with a proxy you supply) returns login_cookies, and each /twitter/create_tweet_v2 post is then 60 credits ($0.0006), billed per HTTP 200 call. The call acts as that account, so X can rate-limit, lock or suspend it; keep a human pace, use only your own account, and expect the session to need a re-login now and then. For scheduled posting with a queue and calendar, a scheduler is the simpler tool.

bash
# Push instead of poll: a tweet filter rule checks your query on twitterapi.io's side
# and POSTs matches to the webhook URL set in your dashboard (an n8n Webhook node,
# a Zapier Catch Hook, an Activepieces webhook trigger, or your own server).
export KEY=...   # your twitterapi.io API key

# 1. Create the rule (tag and value up to 255 characters; interval_seconds 0.05 to 86400, default 60)
curl -s -X POST https://api.twitterapi.io/oapi/tweet_filter/add_rule \
  -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{"tag": "ifttt-replacement", "value": "from:IFTTT OR from:zapier OR from:n8n_io", "interval_seconds": 300}'
# -> {"rule_id": "...", "status": "success", "msg": "..."}

# 2. New rules are not active (is_effect defaults to 0): send every field again with is_effect 1
curl -s -X POST https://api.twitterapi.io/oapi/tweet_filter/update_rule \
  -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{"rule_id": "RULE_ID", "tag": "ifttt-replacement", "value": "from:IFTTT OR from:zapier OR from:n8n_io", "interval_seconds": 300, "is_effect": 1}'

# 3. List your rules
curl -s https://api.twitterapi.io/oapi/tweet_filter/get_rules -H "X-API-Key: $KEY"
08 — Section

Which IFTTT alternative should you pick?

Stay on IFTTT if your X automation is a personal Applet on a quiet account or keyword and an hour (Free) or 15 minutes (Starter at $2.99/month) of delay is fine. It is the only platform here with a native new-tweet trigger.

Move to n8n if you want branching logic, code steps and self-hosting, and you can add one HTTP Request node for X data.

Move to Activepieces if you want IFTTT's simplicity with an open-source core and a free cloud tier.

Move to Zapier if your team already works there and the other steps live in its catalog; plan for a paid plan because Webhooks by Zapier is premium.

Move to Make for a visual canvas with routers and iterators; budget credits for every scheduled run, including empty ones.

Skip Pipedream Workflows for new builds: it shuts down on March 31, 2027.

Write the trigger yourself if a keyword is busy (above about 5 tweets an hour, where a 10-tweet hourly check overflows) or you need checks faster than 5 minutes. The script below is the whole trigger; point ACTION_URL at whichever platform runs the actions.

09 — Section

How we collected this

Question: what would a polling new-tweet trigger see at IFTTT's published check intervals (hourly on Free, 15 minutes on Starter, 5 minutes on Pro and Pro+), and what would the same watch cost through an API you poll yourself.

Accounts and queries: Part A, the 100 most recent posts of @IFTTT, @zapier, @n8n_io, @make_hq and @NASA, and 40 from @activepieces, via /twitter/user/last_tweets with replies excluded (the default). Part B, the newest tweets for the searches n8n, zapier, ifttt and home assistant, each with -filter:retweets, via /twitter/tweet/advanced_search with queryType=Latest, 14 to 18 pages each.

Sample and window: 540 account posts and 1,201 search tweets, collected in 2026 with 92 read requests (about $0.26). Search windows ran from 28.2 hours (home assistant) to 74.5 hours (ifttt); the combined account feed uses the 32-day window all five accounts share.

Method: tweets were counted in clock-aligned 5-, 15- and 60-minute windows fully inside each sample's span. A window with zero tweets is an empty check; tweets beyond the 10th in a window are counted as beyond a 10-tweet check. Delay is the time from each post to the next window boundary. Monthly costs use 30 days, $0.00015 per empty check and $0.00015 per tweet returned; official X API figures use its $0.005 per post read rate card.

What the sample cannot show: IFTTT's real check times are not aligned to the clock and may drift, so delays here are a model of the documented interval, not a measurement of IFTTT. We did not run IFTTT Applets, so we cannot say whether tweets beyond 10 are delivered on a later check. Search samples cover one to three days, so weekly cycles and launch spikes are not represented; reposts were excluded from searches but included in account timelines, and an IFTTT account trigger may treat reposts differently.

Aggregates only. The accounts named are organizations; search results were analyzed in aggregate, no individual's posts are quoted or profiled, and raw search pages were not kept.

python
"""new_tweet_trigger.py - an IFTTT-style "new tweet" trigger you run yourself.

Watches accounts (like IFTTT's "New tweet by a specific user") or a search
(like "New tweet from search") and POSTs every new tweet, as JSON, to any
action URL: an n8n or Activepieces webhook, a Zapier Catch Hook, Slack, Discord.

    pip install requests
    export TWITTERAPI_IO_API_KEY=...          # twitterapi.io dashboard
    export ACTION_URL=https://example.com/hook
    python new_tweet_trigger.py               # one pass; run from cron every 5-60 minutes

Cost: one search request per pass. A pass that finds nothing costs the 15-credit
minimum ($0.00015); each tweet returned costs $0.00015. No per-check tweet limit:
the loop follows next_cursor until it has every new tweet.
"""
import json
import os
import time
from datetime import datetime

import requests

API = "https://api.twitterapi.io"
KEY = os.environ["TWITTERAPI_IO_API_KEY"]
ACTION_URL = os.environ["ACTION_URL"]
WATCH = ["IFTTT", "zapier", "n8n_io"]           # accounts, or set X_QUERY for a search trigger
QUERY = os.environ.get("X_QUERY")                # e.g. 'n8n -filter:retweets lang:en'
STATE = "trigger-state.json"
OVERLAP = 120                                    # seconds re-read each pass; seen ids drop duplicates
MAX_PAGES = 25                                   # safety cap: 25 pages = up to 500 tweets per pass


def load_state():
    if os.path.exists(STATE):
        with open(STATE) as f:
            return json.load(f)
    return {"since_time": int(time.time()) - 3600, "seen": []}


def search_new(since_time):
    base = QUERY or "(" + " OR ".join(f"from:{h}" for h in WATCH) + ")"
    params = {"query": f"{base} since_time:{since_time}", "queryType": "Latest"}
    tweets, cursor = [], None
    for _ in range(MAX_PAGES):
        if cursor:
            params["cursor"] = cursor
        r = requests.get(f"{API}/twitter/tweet/advanced_search",
                         headers={"X-API-Key": KEY}, params=params, timeout=30)
        r.raise_for_status()
        body = r.json()
        page = body.get("tweets") or []
        tweets.extend(page)
        if not page or not body.get("has_next_page") or not body.get("next_cursor"):
            break
        cursor = body["next_cursor"]
    return tweets


def created(t):
    # createdAt looks like "Thu Oct 16 12:34:56 +0000 2026"
    return datetime.strptime(t["createdAt"], "%a %b %d %H:%M:%S %z %Y")


def fire(t):
    a = t.get("author") or {}
    payload = {                                  # the "ingredients" your action receives
        "id": t["id"],
        "url": t.get("url") or t.get("twitterUrl"),
        "text": t.get("text"),
        "created_at": t.get("createdAt"),
        "user_name": a.get("userName"),
        "name": a.get("name"),
        "followers": a.get("followers"),
        "likes": t.get("likeCount", 0),
        "is_reply": t.get("isReply", False),
        "lang": t.get("lang"),
    }
    requests.post(ACTION_URL, json=payload, timeout=15).raise_for_status()


def run_once():
    state = load_state()
    started = int(time.time())
    seen = set(state["seen"])
    new = [t for t in search_new(state["since_time"] - OVERLAP) if t["id"] not in seen]
    for t in sorted(new, key=created):          # oldest first
        fire(t)
        state["seen"].append(t["id"])
    state["since_time"] = started
    state["seen"] = state["seen"][-5000:]
    with open(STATE, "w") as f:
        json.dump(state, f)
    print(f"{len(new)} new tweet(s) sent to the action")


if __name__ == "__main__":
    run_once()

Researching this?Free starter credits cover end-to-end testing — Google sign-in, no card. Get a key.

10 — Questions

Questions readers ask

Does IFTTT still work with Twitter?

Yes. IFTTT's X (Twitter) service page lists 12 triggers, 2 queries and 3 actions, including New tweet by a specific user, New tweet from search, New mention of you and Post a tweet. All triggers poll: every hour on Free, every 15 minutes on Starter, every 5 minutes on Pro and Pro+.

What is the best free alternative to IFTTT?

For general automations, n8n's self-hosted Community edition and Activepieces (open-source core, cloud Free plan with 1,000 credits a month) are the common picks; Make Free also gives 1,000 credits a month. For X triggers none of them has a native new-tweet trigger, so you add a scheduled HTTP request to an X data API.

Can Zapier trigger on a new tweet?

Not natively. Zapier's Twitter integration stopped working on August 31, 2023. You can rebuild it with Webhooks by Zapier (a premium app): Retrieve Poll checks a URL for new entries, or Catch Hook receives tweets pushed by a filter rule.

Is IFTTT cheaper than Zapier?

On list price, yes: IFTTT Starter is $2.99/month ($2.09 billed annually) and Pro $7.99/month, while Zapier Pro starts at $29.99/month ($19.99 billed annually) for 750 tasks. They count differently: IFTTT in credits per Applet run, Zapier in tasks per successful action.

Why does my IFTTT Twitter Applet run late?

Because X triggers are polling triggers: IFTTT checks every hour on Free, 15 minutes on Starter and 5 minutes on Pro. In our study the average wait from a post to the next check was 32.1 minutes hourly, 8.3 at 15 minutes and 2.6 at 5 minutes.

Does IFTTT's search trigger miss tweets?

IFTTT documents New tweet from search as limited to 10 tweets per check. For the keyword n8n (13.7 tweets an hour), 42.4% of tweets fell beyond the first 10 in their hour; at 15-minute checks 2.2%. IFTTT does not say whether those are picked up later.

How do I get new tweets into n8n, Make or Activepieces without a native trigger?

Schedule an HTTP request to /twitter/tweet/advanced_search with a since_time: filter and an X-API-Key header, then split the tweets array into items. An empty check costs $0.00015 and tweets cost $0.15 per 1,000. Or create a tweet filter rule that POSTs new tweets to the platform's webhook trigger.

Do I need an X developer account for the API route?

No. Reads on twitterapi.io need only an API key in the X-API-Key header. New accounts that pass the automatic bot check get up to $1 of free credits (at most 100,000 credits, no card, one per person or network, expiring after 31 days). The official X API needs your own developer app and charges $0.005 per post read.

11 — Further reading

Continue

Sources & further reading
More from this series

Writing about something you built with TwitterAPI.io? Our community rewards program pays API credits for honest tutorials, build logs and videos.

Build it

Stop reading. Start building.

Starter credits cover real testing on real data. Google sign-in, no card, no application queue.

Get an API key

Already building with TwitterAPI.io? Publish an honest tutorial or build log about it and earn up to $200 a month in API credits.