INTEGRATIONS
Integrations
How do I connect the TwitterAPIs X data API to n8n, Make, Zapier or an AI agent?
TwitterAPIs is a plain REST API, so any automation platform that can make an HTTP request with a custom header works: the HTTP Request node in n8n, the HTTP app in Make, or Webhooks by Zapier's Custom Request action. No connector install, no app authorization, because all 109 endpoints are ordinary GET and POST calls with one header.
Per our own spec, 24 of 109 endpoints cost nothing to call and 62 cost $0.0008, with the remaining 23 between $0.0016 and $0.01. Each figure is published in the OpenAPI document as an x-cost-usd field, which matters more in an automation tool than on a pricing page: a scenario that fans out over a list is priced per call, so you can compute what a run costs from the workflow itself before you schedule it.
| Platform | What to add | Header field | Where the key lives | Effort |
|---|---|---|---|---|
| n8n | HTTP Request node | Send Headers | Generic Credential Type, then Header auth or Bearer auth | One node, no code |
| Make | HTTP app | Headers | A connection with Authentication type set to API key | One module, no code |
| Zapier | Webhooks by Zapier, action Custom Request | Headers | Entered as a header value on the step | One step, no code |
| Composio | Custom MCP, or a custom tool written in the SDK | Not applicable, this path is code | API key or OAuth on the toolkit you register | Developer work, not a no-code step |
The request every platform is making
Whatever the interface calls its fields, this is the call underneath. Get this working in a terminal first, then reproduce the same four parts in the platform: method, URL, query parameter, header.
GET https://api.twitterapis.com/twitter/user/info?username=naval Authorization: Bearer YOUR_API_KEY # or, if the platform prefers a named key header x-api-key: YOUR_API_KEY
Platform by platform
Add the HTTP Request node. Custom headers go in Send Headers.
- Bearer auth in n8n is header auth with the name preset to Authorization and the value preset to Bearer plus your token, which is exactly the shape this API expects.
- Header auth takes a name and a value directly, so it also covers the x-api-key form if you prefer that header.
- Storing the key as a credential rather than typing it into the node keeps it out of the workflow definition you export or share.
Add the HTTP app. Custom headers go in Headers.
- The module carries separate fields for URL, Method, Headers and Query parameters, so a read call is four fields and no code.
- Make's own documentation says you do not need the Headers field for credentials, because the authentication type has its own field for that.
- Older Make help pages split this app into several named sub-actions. If the screen in front of you does not match, look for the HTTP app rather than a specific action name.
Zapier
Zapier Webhooks docsAdd the Webhooks by Zapier, action Custom Request. Custom headers go in Headers.
- Custom Request supports GET, PUT and POST, which covers every read endpoint on this API.
- Zapier's documentation is explicit that credentials typed into step fields are stored in plain text and readable by anybody with access to the Zap, so treat a key used this way as shared with everyone on that account.
- A newer app called API by Zapier adds a reusable connection with an authentication type named Static Headers, which fits an API key properly. It is labelled a beta feature in Zapier's own docs, and those docs give contradictory answers about which plans include it, so check inside your own account before planning around it.
Composio
Composio Custom MCP docsAdd the Custom MCP, or a custom tool written in the SDK. Custom headers go in Not applicable, this path is code.
- Composio is an agent tooling layer rather than a visual workflow builder, and it has no generic HTTP action with a headers field the way the other three do.
- Its Custom MCP path expects you to host an MCP server at a public address and register it, and Composio's documentation marks that path experimental and available through its API rather than its dashboard or SDK.
- Its proxy execute helper rejects cross-domain requests by design, so it cannot be pointed at an API that is not already a registered toolkit.
About X, formerly Twitter, and what its API returns
X, formerly Twitter, exposes its data through an official API whose read access is priced and rate-limited for a different kind of buyer than a workflow automation. This API sits in front of it and hands your workflow ordinary JSON over ordinary HTTPS, so what matters on this page is not the platform you are wiring but which of the 109 endpoints the step is going to call.
| What you want | Endpoint | Returns |
|---|---|---|
| A profile and its follower count | user/info | one user object |
| A page of an account's recent posts | user/tweets | a tweets page plus a cursor |
| Posts matching a query | tweet/advanced_search | a tweets page plus a cursor |
| Who follows an account | user/followers | a users page plus a cursor |
| An account's FULL post history | user/tweets/complete | every page, server side, at a higher per-call rate |
| Quote tweets of a post | tweet/quotes | a tweets page plus a cursor |
| Replies to a post | tweet/replies | a tweets page plus a cursor |
65 of the 109 are reads and 44 are writes, and every one of them is a plain GET or POST with a single authorization header, which is the only reason a no-code HTTP step is enough. There is no OAuth handshake to complete inside the platform, no callback URL to host and no app to register with X, because your workflow is calling us rather than calling X.
The one shape worth learning before you build is the cursor. Anything that returns a list returns one page plus a next_cursor, and a workflow that wants the whole list has to loop. Two things bite there. Billing is per CALL rather than per record, so an unbounded loop over a sparse query is the one way to spend more than you planned. And the loop needs BOTH exits, because the two endpoint families fail in opposite directions. Search and list endpoints hand back a null cursor on a page that is still full, so stopping only when the page comes back empty drops that last page, and omitting the cursor on the next call restarts you at page one. Follower-graph endpoints do the reverse and keep returning a non-null cursor after the last real page, so stopping only when the cursor goes null never stops at all. Check the empty collection AND the spent cursor, cap the loop by calls, and keep the cursors you have already seen so a cursor that stops advancing raises instead of billing. Working clients for six languages are on the SDK page.
What a run actually costs, measured
Because billing is per call, the number that decides a scheduled workflow's monthly bill is how many records a call returns on average, not the page size you asked for. We measured ours rather than estimating it: across 396,817 successful read calls on our own billing logs over successful tweet-returning reads, 13 to 17 August 2026, a timeline read returned 18.78 tweets on average, bulk reads excluding tweet/detail returned 12.96, and a search read returned 7.62, with 29.5% of search calls returning nothing at all and still counting as a call.
Put that through a schedule and the arithmetic is short, but read the yield figures carefully, because they are RECORDS PER CALL and not new posts per day. A workflow polling one account's timeline every fifteen minutes makes 96 calls a day, which is $2.30 a month at $0.0008 a call. What it does NOT get is 96 times 18.78 posts: each call returns the same recent timeline, so the distinct new posts you actually collect is however many that account published, which for most accounts is a handful a day. You are paying 96 times to notice three things. That is the whole argument for the webhook trigger below, and it is why a search-driven workflow costs the same per call while returning nothing at all on nearly a third of them.
New accounts start with $0.50 of credit, about 625 read calls and no card, which is enough to run the real workflow on real data before you decide whether the schedule is right.
Stop polling: trigger the workflow when the post appears
Almost every workflow built on this page starts the same way: a schedule trigger, a read call, and a filter that throws away everything already seen. It works, and it is the expensive way to do it. A five-minute schedule is 288 calls a day whether or not the account posted, and the account you are watching probably posts three times. You are paying for the silence.
The alternative is to invert it. Register a webhook destination, point a monitor at the account, and the request arrives at your workflow the moment there is something to process, subject to the shared poll interval the monitor runs on rather than instantly. Three of the four platforms here can receive one: n8n has a Webhook trigger node, Make has a custom webhook module, and Zapier has Catch Hook. Composio is the exception, for the reason its section above gives, no generic HTTP action with a headers field, so point the monitor at one of the other three or at your own endpoint. The workflow you already built stays the same from step two onward. Only the trigger changes, from a clock to an event.
Three things are worth knowing before you switch. Creating and managing monitors and webhook destinations is free, so the cost of the watching itself is zero and you pay only for what you then read. Deliveries are signed, so your workflow can reject anything that did not come from us rather than trusting whatever posts to the URL. And every monitor exposes its own delivery health, which matters more than it sounds: a webhook that silently stops is indistinguishable from an account that simply went quiet, and that is the failure mode nobody notices for a week.
| Watching one account | Calls per day | What you pay for |
|---|---|---|
| Schedule trigger, every 5 minutes | 288 | every check, mostly empty |
| Schedule trigger, every 15 minutes | 96 | every check, mostly empty |
| Monitor plus webhook | 0 to watch | only what you read after a delivery |
Polling is still the right answer for some jobs. A nightly export, a backfill, or anything that reads a whole follower list is a scheduled read by nature and there is no event to wait for. The rule of thumb is which question the workflow is asking: "what happened since I last looked" wants a webhook, and "give me all of it" wants a schedule and a cursor loop.
For agents rather than workflows
A workflow platform is the right tool when the steps are fixed and the schedule is known. When the consumer is an AI assistant deciding what to fetch as it goes, the MCP server is the better fit: it exposes 109 tools an assistant calls by name, so there is no URL to build and no header to remember. n8n, Make and Zapier each now ship a client that can connect to a remote MCP server as well, and each of those vendors labels its own client a beta feature at the time of writing, so treat that route as promising rather than settled.
If you would rather write the integration yourself, the language clients page carries a working client for six languages, the quickstart gets a first response back in about a minute, and the REST API reference covers paging and the error contract your retry step will branch on.
Worked examples and what to read next
A connector list is only useful once you know what the wiring looks like. These are the builds written out end to end, plus the references you will want open while you do it.
X into n8n, end to end
A full workflow rather than a node screenshot, including the paging and error branches most tutorials skip.
Tweets into Google Sheets
Apps Script with cursor pagination, dedup and a scheduled trigger, plus the cost math for running it daily.
Running the MCP server
What an assistant can actually do once the endpoints are exposed as tools, and where the limits sit.
MCP reference
Every endpoint as a native tool, no REST wrapper code, for Claude, Cursor and anything else that speaks MCP.
SDKs
If your integration is code rather than a connector, start here instead of hand-rolling a client.
REST reference
The raw endpoint surface, for a connector that takes a URL and a header rather than a package.
Rate limits
What a scheduled workflow runs into once it is looping, and the error contract your retry step branches on.
Cost calculator
An automation that runs on a schedule has a monthly bill, not a per-call price. Put your own cadence in.
Get a key
Free credits and no card, so you can test the connector before committing to the build.
Short answers
Single questions about access, tiers and cost, answered one at a time.
Frequently Asked Questions
No. There is no listed connector in any marketplace, and this page does not pretend otherwise. What there is instead is a plain REST API that every one of those platforms can call through its own generic HTTP step, which is a documented, supported path rather than a workaround. The practical difference is that you set the URL and one header yourself instead of picking a logo from a list.
Webhooks by Zapier, which carries the Custom Request action, is listed by Zapier as available on its Free plan as well as the paid ones. Note that Zapier's own documentation warns that credentials typed into step fields are stored in plain text and are readable by anybody with access to the Zap, which is a real consideration for a shared account. Zapier's newer API by Zapier app stores keys as a proper connection, but its docs give conflicting answers on plan availability, so confirm that one in your account.
If the consumer is an AI agent rather than a workflow, yes. The MCP server exposes 109 tools an assistant can call by name, with no URL building and no header handling, and n8n, Make and Zapier all now ship a client that can connect to a remote MCP server. Both of those clients are labelled beta by their own vendors at the time of writing. For a deterministic workflow that runs on a schedule, a plain HTTP step is simpler and easier to debug.
Add an HTTP Request node, set the method to GET and the URL to the endpoint you want. Turn on Send Headers and add the Authorization header, or better, create a Generic Credential of type Bearer auth and paste the key there so it is stored as a credential rather than sitting in the workflow. The response arrives as JSON that the next node can read directly.
n8n and Make are the closest to one step: both have a first-class headers field and a reusable credential built for an API key, so the key never has to be pasted into the step itself. Zapier is equally quick to get working but asks more care about where the key ends up. Composio is a different category, since it has no generic HTTP action and expects either a hosted MCP server or code.
The API side is per call at $0.0008 for a standard read, with no plan minimum and no seat count, so a workflow that runs hourly costs the number of calls it makes. The thing to watch is a loop: a scenario that pages through a large follower list makes one billed call per page, and a retry step that repeats a failed call bills for each attempt.