--- name: finding-twitter-spaces-hosts-by-topic description: > Finds Twitter Spaces hosts in a specific topic area using apidojo's Twitter scrapers. Triggers when the user asks to: find Twitter Spaces hosts in a niche, discover people who run Twitter Spaces about a topic, find Spaces hosts to collaborate with or get featured on, identify active Twitter Spaces communities in an industry, find hosts running regular business or tech Spaces on Twitter, build a Twitter Spaces outreach list for thought leadership, or discover Twitter audio show hosts in a professional category. Returns host handle, Space topic focus, frequency signals, co-host network, and audience size indicators. Ideal for thought leaders building audio presence, PR professionals, and community builders. license: Apache-2.0 metadata: author: apidojo version: "1.0" apify-actor: apidojo/tweet-scraper --- # Finding Twitter Spaces Hosts By Topic Executes finding twitter spaces hosts by topic using apidojo scrapers. Part of the apidojo intelligence skills library. ## Prerequisites - `APIFY_TOKEN` environment variable set - Optional: Apify MCP server installed ## Inputs | Parameter | Type | Required | Default | Notes | |-----------|------|----------|---------|-------| | `searchTerms` | array | ✅ | `[]` | Twitter advanced search queries (e.g. `["#AI lang:en", "from:NASA"]`) | | `sort` | string | Optional | `Top` | Sort order: `Latest`, `Top`, or `Latest+Top` | | `tweetLanguage` | string | Optional | — | ISO 639-1 language code (e.g. `en`) | | `maxItems` | number | Optional | Unlimited | Maximum tweets to return | | `onlyVerifiedUsers` | boolean | Optional | `false` | Only tweets from verified users | | `onlyTwitterBlue` | boolean | Optional | `false` | Only Twitter Blue subscribers | | `onlyImage` | boolean | Optional | `false` | Only tweets with images | | `onlyVideo` | boolean | Optional | `false` | Only tweets with videos | | `onlyQuote` | boolean | Optional | `false` | Only quote tweets | | `author` | string | Optional | — | Filter to a specific author handle | | `inReplyTo` | string | Optional | — | Tweets replying to a specific handle | | `mentioning` | string | Optional | — | Tweets mentioning a specific handle | | `geotaggedNear` | string | Optional | — | Tweets near a location | | `withinRadius` | string | Optional | — | Radius around geotaggedNear | | `geocode` | string | Optional | — | Lat/lng + radius string | | `placeObjectId` | string | Optional | — | Tweets tagged with a place | | `minimumRetweets` | number | Optional | — | Minimum retweet count | | `minimumFavorites` | number | Optional | — | Minimum like count | | `minimumReplies` | number | Optional | — | Minimum reply count | | `start` | string | Optional | — | Tweets after this date (YYYY-MM-DD) | | `end` | string | Optional | — | Tweets before this date (YYYY-MM-DD) | | `includeSearchTerms` | boolean | Optional | `false` | Add the matched search term to each tweet | | `customMapFunction` | string | Optional | — | JavaScript function to transform each output object | ## Workflow ``` Progress: - [ ] Step 1: Define parameters - [ ] Step 2: Run tweet-scraper - [ ] Step 3: Filter and classify results - [ ] Step 4: Score by quality and relevance - [ ] Step 5: Deliver output ``` ### Step 2: Run the Actor **Recommended — run_actor.js (handles waiting, output, and file saving automatically):** ```bash # Quick answer (prints table to chat) node scripts/run_actor.js \ --actor "apidojo~tweet-scraper" \ --input '{"param": "value"}' # Save as CSV node scripts/run_actor.js \ --actor "apidojo~tweet-scraper" \ --input '{"param": "value"}' \ --output YYYY-MM-DD_results.csv --format csv # Save as JSON node scripts/run_actor.js \ --actor "apidojo~tweet-scraper" \ --input '{"param": "value"}' \ --output YYYY-MM-DD_results.json --format json ``` > `APIFY_TOKEN` must be set in environment or `.env` file. **If Apify MCP is available:** ``` Tool: apify:run-actor Actor: "apidojo~tweet-scraper" Input: { "searchTerms": ["Twitter Spaces [TOPIC]", "join my Space [TOPIC]", "hosting a Space about [TOPIC]", "upcoming Space [TOPIC]"], "maxItems": 100 } ``` **REST API fallback:** ```bash curl -X POST \ "https://api.apify.com/v2/acts/apidojo~tweet-scraper/runs?token=$APIFY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"searchTerms": ["Twitter Spaces [TOPIC]", "join my Space [TOPIC]", "hosting a Space about [TOPIC]", "upcoming Space [TOPIC]"], "maxItems": 100}' ``` Wait for `SUCCEEDED`. Fetch dataset: ```bash curl "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?token=$APIFY_TOKEN" ``` ### Step 3: Classify Results ``` classification: REGULAR_HOST (> 2 Spaces/month) | OCCASIONAL_HOST (1-2/month) | ONE_TIME (single event) | UPCOMING (announced future Space) ``` ### Step 4: Score Each Result ``` score = spaces_host_score = (hosts_regularly: > 2/month = 1, 1/month = 0.6) * 0.40 + (followerCount > 2000 ? 1 : followerCount/2000) * 0.35 + (topic_alignment ? 1 : 0.5) * 0.25 ``` ### Step 5: Edge Cases - **Twitter Spaces announcement tweets don't always include #Spaces — search for 'link in bio' + 'Space' or the Spaces card URL pattern (twitter.com/i/spaces/) to identify Spaces-specific tweets** Additional fallbacks: - **< 20 results**: Broaden search terms; remove secondary filters - **No results**: Verify the search terms are correct; try alternate phrasings - **Data quality issues**: Remove entries with missing key fields; note count in output ## Output Format ``` # Finding Twitter Spaces Hosts By Topic Results: [N] | Date: [DATE] | # | [Key Field] | [Metric 1] | [Metric 2] | [Classification] | [Score] | |---|------------|-----------|-----------|-----------------|---------| | 1 | [value] | [value] | [value] | [type] | [0.XX] | ## Summary Top result: [description] Key finding: [insight] ``` ## Troubleshooting **Too few results:** Broaden the primary search term; remove restrictive filters. **Low quality results:** Apply minimum score threshold (≥ 0.50) to filter noise. **Actor fails to run:** Verify API key; check actor status at apify.com/apidojo.