This tutorial shows how to scrape Twitter people search profiles into CSV with the Twitter People Search Scraper template for UScraper. You will prepare a profile URL list, preserve the original people-search query, set the export path, run a validation pass, and review the fields before scaling.
Before you start
Prerequisites before you scrape Twitter people search
You need UScraper installed as a local desktop app, a short list of profile URLs, a browser session that can open the target profiles, and a folder where CSV files can be written. Start with a focused search intent such as "AI founders" or "retail analysts" instead of a broad word that returns unrelated accounts.
The companion Twitter People Search Scraper is the download path. This post explains why the workflow uses a profile URL list, how the export columns map to the template JSON, and how to validate the CSV when X search or profile pages behave differently across accounts.
A visible profile page is a starting point for QA, not a blanket permission model. Keep batches narrow, document why you collected the data, and stop if the site asks for manual verification.
Input list
Turn a Twitter People search into profile URLs
Competitor templates often frame this as a people-search results scraper: enter a keyword, choose the People tab, and export user name, handle, bio, profile URL, avatar URL, and user type. In practice, X can redirect search pages for unauthenticated or challenged sessions, so the UScraper workflow starts from known profile URLs and keeps the original search query attached to every row.
That means you can still start from Twitter/X People search. Search manually, collect the profile URLs that fit the research brief, then paste those URLs into the Navigate block. The template's sample JSON uses an AI query context and a curated list of profile URLs, but you should replace both with your own approved query and profile list.
Workflow
How the Twitter people search scraper works
The export JSON is the authoritative workflow definition. The summary below shows the operating shape without making you inspect every selector.
{
"project": {
"name": "Twitter People Search Scraper",
"description": "Best-effort UScraper equivalent of a Twitter/X People search scraper."
},
"blocks": [
{
"title": "Navigate",
"config": {
"urls": [
"https://x.com/OpenAI",
"https://x.com/AIatMeta"
]
}
},
{ "title": "Wait for Page Load", "config": { "timeout": 30 } },
{
"title": "Wait for Element",
"config": { "selector": "div[data-testid=\"primaryColumn\"]", "timeout": 30 }
},
{
"title": "Structured Export",
"config": {
"fileName": "twitter-people-search-scraper.csv",
"includeHeaders": true,
"fileMode": "append"
}
},
{ "title": "Loop Continue" }
]
}
| Stage | What it does | What to check |
|---|---|---|
| Navigate | Loops through the profile URL array | Replace sample URLs with approved profile URLs |
| Wait for page load | Gives X time to render the profile shell | Empty output often means login, onboarding, or slow render state |
| Wait for primary column | Confirms the main profile area exists | Stop if the browser is on /login, /i/flow, or an error page |
| Sleep | Adds a short buffer for bio and badge content | Increase only after one clean validation run |
| Structured Export | Writes one row from the visible profile page | Confirm file name, save folder, headers, and append mode |
| Loop Continue | Advances to the next profile URL | Watch for repeated fallback rows or redirects |
Use UScraper when a marketer, researcher, or operator needs a reviewable CSV from a short profile list. The workflow is no-code, local, and editable, but you must validate the visible page state.
Runbook
Step-by-step: scrape Twitter user profiles to CSV
Import the template
Open the Twitter People Search Scraper template from the template library and import it into UScraper.
Replace the profile URLs
In Navigate, replace the sample URL array with approved profile URLs. Start with two or three profiles.
Update query context
Update Query_Str and Query_URL so each row points back to the people-search query or source list.
Set the export path
Keep twitter-people-search-scraper.csv or choose a new filename. Clear old test rows before reruns.
Run one validation pass
Run a tiny URL list, open the CSV, and compare several rows against the browser pages.
Scale slowly
Add more URLs only after the first run returns the expected names, handles, bios, URLs, avatars, and labels.
Output
CSV fields exported by the Twitter profile scraper
There is no separate CSV sample in the bundle, so treat the JSON workflow as the field contract. The template writes one row per accessible profile page with eight columns.
twitter-people-search-scraper.csvColumn
Query_Str
The search phrase or people-list label you assign to the run.
Column
Query_URL
The source search URL, spreadsheet URL, or research page behind the profile list.
Column
User_name
Display name from the profile page or browser title fallback.
Column
User_handle
Handle parsed from the current profile path or visible text.
Column
User_URL
Canonical profile URL exported from the current browser location.
Column
User_avatar_URL
Profile photo URL pattern from the current handle when available.
Column
User_bio
Visible bio text from the profile description area.
Column
User_type
Inferred verification type such as not verified, Blue verified, or Gold verified.
Quality checks
Validate the export before using it
Open the CSV after the first run and check five things: the profile URL opens, the handle matches the URL, the display name matches the page, the bio is not mixed with navigation text, and the verification label makes sense. If a row looks wrong, fix the workflow before adding more URLs.
For research and outreach workflows, keep a run note with the search query, input URL list, date, export folder, and any profiles removed during review.
| Symptom | Likely cause | Fix |
|---|---|---|
| Rows repeat | Append mode reused the same CSV | Rename the file or clear old rows before rerun |
| Blank bio | Profile has no bio or selector did not see it | Open the profile manually and confirm the bio area exists |
| Login page exported | Session redirected before profile content loaded | Stop, review account/session state, and do not bypass restrictions |
| Wrong query context | Static Query_Str or Query_URL was not updated | Edit those JS columns before the next run |
| Verification looks wrong | Badge rendering changed or was hidden | Manually review important accounts |
Alternatives
Twitter scraper alternatives and trade-offs
If you are comparing Twitter scraper alternatives, judge them by the input they accept, where data runs, how export works, and how much selector maintenance you own. Hosted tools can help with scheduling and chained automations. The official X API fits sanctioned production access. UScraper fits a supervised profile URL list that needs an editable desktop workflow and local CSV output.
FAQ
FAQ
X/Twitter profile pages may be publicly visible, but automated collection can still be limited by platform terms, privacy law, copyright, robots directives, account rules, and local regulations. Use approved access where required, avoid bypassing login gates or access controls, and get legal review before commercial reuse.

