Export Twitter List Members to CSV with Python (2026)
X has no button to export Twitter list members. Take the List id from its URL, pull 100 members per call into a CSV, and see what a full List costs.
Tarun Khatri
Published · Updated · 7 min read
To export Twitter list members, page through the List with an API and save each member as a row in a CSV file.
X (Twitter) has no export button for Lists. This guide is for you if a List's accounts need to go into a spreadsheet.
You get the no-code options, then a short Python script. We run Weir, the API in the script. This returns up to 100 members of a List:
curl -s "https://api.weirapp.io/v1/x/lists/84839422/members?limit=100" \
-H "Authorization: Bearer $WEIR_API_KEY"
You need Python 3, a free Weir key and a public List. The job in four steps:
- Find the List idCopy the digits after /i/lists/ in the List's URL.
- Check the ListGET /v1/x/lists/{id} shows its size.
- Page through the membersGET /v1/x/lists/{id}/members, 100 a call.
- Write the CSVOne row per member, ids kept as text.
How to export a Twitter List: which tool fits?
A no-code tool suits a one-off export of your own List. An API suits other people's Lists and repeat jobs.
Whatever you pick, a List holds at most 5,000 members, according to X's Help Center. Here is how the options compare:
| Tool | You need | Price, as listed | Best for |
|---|---|---|---|
| Circleboom | Your X account | Tokens per member | Your own Lists |
| TwListExport | A Chrome extension | In-app purchases | One-off, no code |
| Official X API | Developer credits | $0.010 per user read | X's own terms |
| TwitterAPI.io | An API key | $0.0015 per call of 20 | Lowest price |
| Weir API (ours) | An API key | 1 credit per member | Any public List |
Each price comes from the vendor's own page, checked on 22 October 2026. Circleboom's guide gives no token rate, and TwListExport's store page names no prices.
Circleboom also needs your X login and exports Lists from your own account. An API needs only the List id.
Every option hands you a list of people. Keep only what you need, and follow X's terms and the privacy law that applies to you. This isn't legal advice.
Step 1: Find the Twitter List id in its URL
Open the List on x.com and read the id off the address bar. It's the number after /i/lists/:
https://x.com/i/lists/84839422
└── the List id
That example comes from X's own API quickstart. It's "Official Twitter Accounts", a public List owned by @X, and we use it in this guide.
Lists you don't own work the same way, as long as they're public.
Step 2: Check the List's size first
One lookup gives you the List's name, owner and size for 3 credits. You learn the bill before the export starts.
curl -s https://api.weirapp.io/v1/x/lists/84839422 \
-H "Authorization: Bearer $WEIR_API_KEY"
We ran it on 22 October 2026 through Weir's MCP tools, then asked for three members. Trimmed:
→ get_x_list {"id": "84839422"}
← 3 credits · Official Twitter Accounts · owner @X · 81 members
→ get_x_list_members {"id": "84839422", "limit": 3}
← 3 members · 4 credits · meta.nextCursor set
username followersCount protected
CommunityNotes 1192136 false
TwitterThailand 37803 true
TwitterAble 9419 true
Two of the three are protected. You still get a protected member's profile, but not its posts.
memberCount sets your bill. This List fits in a single call, for about 82 credits.
Step 3: Export Twitter list members with Python
GET /v1/x/lists/{id}/members returns up to 100 accounts a call, in X's order. Ask for all 100, since every call adds a credit. X may send fewer, so follow meta.nextCursor until it is null.
Run pip install requests, set WEIR_API_KEY, and keep the key in one header:
import csv, os, time, requests
HEADERS = {"Authorization": f"Bearer {os.environ['WEIR_API_KEY']}"}
This generator yields one page of members at a time:
def member_pages(list_id, max_pages=50):
url, params = f"https://api.weirapp.io/v1/x/lists/{list_id}/members", {"limit": 100}
for _ in range(max_pages):
r = requests.get(url, headers=HEADERS, params=params, timeout=60)
if r.status_code == 429: # too fast: wait, then retry the same page
time.sleep(int(r.headers.get("Retry-After", "10")))
continue
r.raise_for_status() # 402: out of credits; 404: no such List
page = r.json()
yield page["data"]
params["cursor"] = page["meta"]["nextCursor"]
if not params["cursor"]:
return
What the loop gets right:
max_pages=50covers a full List, and the ceiling also caps your bill.- A
429is not a402. A429clears afterRetry-After. A402means you're out of credits.
Step 4: Save the members to a CSV file
csv.DictWriter keeps the columns you name. A flush after each page leaves a usable file if the run stops early.
LIST_ID = "84839422"
FIELDS = ["id", "username", "name", "description", "location",
"protected", "followersCount", "createdAt", "url"]
seen = set()
with open(f"list-{LIST_ID}.csv", "w", newline="", encoding="utf-8-sig") as file:
writer = csv.DictWriter(file, fieldnames=FIELDS, extrasaction="ignore")
writer.writeheader()
for members in member_pages(LIST_ID):
for member in members:
if member["id"] not in seen: # skip an account seen on an earlier page
seen.add(member["id"])
writer.writerow(member)
file.flush()
print(f"wrote {len(seen)} members")
Each row gives you an account's id, handle, name, bio, location, protected flag, follower count, join date and profile URL.
Keep utf-8-sig. Microsoft says Excel opens a UTF-8 CSV normally when it starts with a byte order mark, which this adds.
In Excel, format the id column as Text. Excel keeps only 15 significant digits, so longer X ids lose their last digits. Our Twitter user ID lookup guide turns ids back into usernames.
Can you export a Twitter List's tweets too?
Yes, and a search with listId is the cheap way to read them.
The List timeline, GET /v1/x/lists/{id}/posts, returns the feed as X shows it. X picks the page size, up to about 100 posts. You can't ask for fewer, so a single call can cost you about 101 credits.
Search lets you choose. POST /v1/x/search with listId takes a limit, filters such as minLikes, and sinceId for new posts only. We tried it with a limit of 3:
→ search_x {"listId": "84839422", "limit": 3}
← 3 posts · 4 credits
2026-10-21T20:30Z @Sports Imagine voting this man most overrated
2026-10-21T19:34Z @Music IT'S HAPPENING 😍 Dove Cameron announces...
Next time, send the newest id you've seen as sinceId, and you pay only for new posts. Our guide to getting tweets with Python covers search paging.
What does it cost to export a Twitter List?
On Weir, a members call costs 1 credit plus 1 per account returned.
Most Lists fit inside the free credits, so they cost you nothing. A re-export reads the whole List again and costs the same. Here is a full 5,000-member List priced across APIs, as of October 2026:
TwitterAPI.io is cheaper than us for this job. It charges $0.0015 per List call. Each call returns 20 members.
X's pricing page doesn't name its List members endpoint. Members come back as user objects, so we used X's user-read rate, $0.010.
This endpoint counts as 3 requests against your rate limit. On the free tier, that's up to 1,000 members a minute. A full List takes about five minutes.
If it doesn't work
- A
404. The id is wrong or the List is gone.GET /v1/x/lists/{id}also answers404for a private List. - A
400on page two. A cursor only works with the same List andlimit. Change either, and start again. - A
402. You're out of credits, and retrying won't help. Buy a pack, or wait for next month's free credits.
When not to use Weir
- Price per member is all you care about. TwitterAPI.io charges less per List member than our packs.
- The List is private. Weir reads public Lists only.
- You need to add or remove members. Weir only reads, so managing a List takes X's own API.
- You export one List, once, with no code. A tool like Circleboom fits that job.
FAQ
What is the Twitter list member limit?
A List can hold 5,000 accounts, according to X's Help Center. A bigger group needs a second List, and you can own up to 1,000 of them.
Does the export include protected accounts?
Yes. Two of the first three members of X's own List were protected, and both came back with their profiles. Their posts stay hidden, and so do their follower lists.
Is there a Twitter list members API?
Yes. X's own GET /2/lists/{id}/members returns up to 100 accounts per request with an app-only bearer token. Weir's GET /v1/x/lists/{id}/members does the same with a plain API key, at a credit per member.
Can I export a Twitter List without coding?
Yes. Circleboom exports Lists on the account you connect, and TwListExport's store page promises a CSV in one click. You can also ask Claude for a List's members through our X MCP server, with no script.
How many List members can I export for free?
About 4,950 a month on Weir, from the free credits. That covers every List but the largest. Past that, a $5 pack buys 25,000 credits that never expire.
Sources
All pages checked 22 October 2026.
- X Help Center, Help with Lists: https://help.x.com/en/using-x/x-lists-not-working
- X API, List members quickstart: https://docs.x.com/x-api/lists/list-members/quickstart/list-members-lookup
- X API, Get List members: https://docs.x.com/x-api/lists/get-list-members
- X API pricing: https://docs.x.com/x-api/getting-started/pricing
- Circleboom, export List members (5 June 2026): https://circleboom.com/blog/how-to-export-twitter-list-members-to-a-csv/
- TwListExport (updated 27 July 2026): https://chromewebstore.google.com/detail/goplibopdcpikpipdlfeelhjnieeaeia
- TwitterAPI.io pricing: https://twitterapi.io/pricing
- TwitterAPI.io, Get List Members: https://docs.twitterapi.io/api-reference/endpoint/get_list_members
- Microsoft, Excel precision: https://support.microsoft.com/topic/1bf7b935-36e1-4985-842f-5dfa51f85fe7
- Microsoft, UTF-8 CSV in Excel: https://support.microsoft.com/en-us/excel/opening-csv-utf-8-files-correctly-in-excel
- Weir getXListMembers: https://docs.weirapp.io/reference/x/getXListMembers
- Weir billing: https://docs.weirapp.io/billing
- Weir calls, 22 October 2026: get_x_list, get_x_list_members, search_x