Discovers Threads user accounts by keyword, extracting profile data including username, display name, verification status, biography, and follower count. Use when user asks to find Threads accounts, search Threads profiles, discover Threads users by keyword, look up Threads creators, find influencers on Threads, search for people on Threads, get Threads user details, collect Threads profile information, find accounts related to a topic on Threads, search Threads for accounts by name or keyword, or enumerate Threads users matching a search term.
npx skills add https://github.com/browser-act/skills --skill threads-profile-search
> keyword → list of matching user profiles with optional enrichment (bio, follower count)
All process output to user (progress updates, process notifications) follows the user's language.
Search Threads for user accounts matching a keyword and extract profile information, with optional per-user enrichment to retrieve biography and follower count via the profile API.
If browser-act has been confirmed available in the current session → skip this step.
Invoke browser-act via Skill tool to load usage. If installation or configuration issues arise, follow its guidance to resolve then retry.
> This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page. JS code is encapsulated in Python files under the scripts/ directory, invoked via eval "$(python scripts/xxx.py {params})". $(...) is bash syntax; it is recommended to use the bash tool for execution.
Navigate to the profile search page, then extract user accounts from the SSR-embedded JSON:
navigate https://www.threads.com/search/?q={keyword}&type=profileswait stableeval "$(python scripts/extract-profile-search.py '{keyword}')"Output example:
{
"keyword": "zuck",
"profiles": [
{
"pk": "14803522782", // Instagram-based user ID
"username": "ceozuck162", // Threads username (without @)
"full_name": "ceo,zuck", // display name
"is_verified": false, // blue checkmark verification status
"is_private": false, // true if account is private
"profile_pic_url": "https://...", // profile picture URL
"profile_url": "https://www.threads.com/@ceozuck162"
}
],
"count": 16,
"page_info": {
"end_cursor": null,
"has_next_page": false,
"has_previous_page": false,
"start_cursor": null
}
}
Error handling: If error: true is returned, verify the page URL ends with &type=profiles. If searchResults not found, retry navigate and wait stable once. If count: 0, no accounts matched the keyword.
Enrich a single username with full profile data including biography and follower count. The browser must be on any Threads page (authentication state is shared across the session):
eval "$(python scripts/get-profile-details.py '{username}')"
Parameters:
username: Threads username without @ (e.g., zuck)Output example:
{
"pk": "314216", // Instagram user ID
"username": "zuck",
"full_name": "Mark Zuckerberg",
"biography": "I build stuff", // profile bio text, null if empty
"follower_count": 16944740, // number of followers, null if unavailable
"following_count": 464, // number of accounts followed
"is_verified": true,
"is_private": false,
"profile_pic_url": "https://...",
"profile_url": "https://www.threads.com/@zuck",
"external_url": null // website URL from profile, null if not set
}
Error handling: If error: true with a 429 status, the profile API is rate-limited — wait 10-30 seconds before retrying. If User not found, the username may be invalid or the account may be deleted.
To collect profiles with biography and follower count for all results:
navigate https://www.threads.com/search/?q={keyword}&type=profiles → wait stableeval "$(python scripts/extract-profile-search.py '{keyword}')" → collect profiles listusername in profiles:a. eval "$(python scripts/get-profile-details.py '{username}')" → merge biography, follower_count, following_count, external_url into profile record
Note: Profile API calls are made in the browser context and share the same session cookies. Add 1-2 second intervals between per-user calls to avoid rate limiting.
Pagination is not available for unauthenticated access on profile search (has_next_page: false). Results are limited to approximately 16 profiles per keyword without login.
result.count >= 1 and result.profiles[0].username != null
For enriched flow: profiles[0].follower_count != null and profiles[0].biography != null
get-profile-details.py) may be rate-limited; add intervals in batch loopspk from SSR profile search is the Instagram-based ID, which differs from the Threads-specific ID in post dataextract-profile-search.py once per keyword, then loop through the returned usernames for enrichment. Do not call get-profile-details.py in parallel within the same session — rate limit applies.get-profile-details.py calls use fetch() in the current browser context — no additional navigation needed.Path: {working-directory}/browser-act-skill-forge-memories/threads-scraper-threads-profile-search.memory.md
Before execution: If the file exists, read it first — it records unexpected situations encountered during past executions; adjust strategy order accordingly.
After execution: If an unexpected situation is encountered (strategy became ineffective, page redesigned, anti-scraping upgraded, better path discovered), append a line:
{YYYY-MM-DD}: {what happened} → {conclusion}
Normal execution does not write to the file. Do not record what keywords were used or how many results were returned — those are task outputs, not experience.
A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).
Extracts and analyzes competitors' ads from ad libraries (Facebook, LinkedIn, etc.) to understand what messaging, problems, and creative approaches are working. Helps inspire and improve your own ad campaigns.
Identifies high-quality leads for your product or service by analyzing your business, searching for target companies, and providing actionable contact strategies. Perfect for sales, business development, and marketing professionals.
Analyzes your recent Claude Code chat history to identify coding patterns, development gaps, and areas for improvement, curates relevant learning resources from HackerNews, and automatically sends a personalized growth report to your Slack DMs.
Complete App Store Optimization (ASO) toolkit for researching, optimizing, and tracking mobile app performance on Apple App Store and Google Play Store
NGS analysis toolkit. BAM to bigWig conversion, QC (correlation, PCA, fingerprints), heatmaps/profiles (TSS, peaks), for ChIP-seq, RNA-seq, ATAC-seq visualization.
Materials science toolkit. Crystal structures (CIF, POSCAR), phase diagrams, band structure, DOS, Materials Project integration, format conversion, for computational materials science.
Transforms vague UI ideas into polished, Stitch-optimized prompts. Enhances specificity, adds UI/UX keywords, injects design system context, and structures output for better generation results.
Take browser-act/threads-profile-search from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.