Bluesky Startup Finder Scraper
Pricing
from $0.01 / 1,000 results
Bluesky Startup Finder Scraper
"Searches Bluesky for startup launches, funding news, and building-in-public posts using your own keywords. No login or API key required. Extracts author handles, post text, links, and engagement stats (likes, reposts, replies), then saves it all as clean, exportable dataset rows fast."
Pricing
from $0.01 / 1,000 results
Rating
0.0
(0)
Developer
Biddut Hossain
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
1
Monthly active users
2 months ago
Last modified
Categories
Share
""" Bluesky Startup Finder — Apify API Client (Python)
This script runs OUTSIDE the actor. Use it from your own machine/server to:
- Trigger a run of your deployed "bluesky-startup-finder" Actor on Apify.
- Wait for it to finish.
- Download the results (dataset items) as JSON.
Install dependency: pip install apify-client
You need your Apify API token: Apify Console -> Settings -> Integrations -> Personal API tokens """
import json import os import sys
from apify_client import ApifyClient
--- Configuration -----------------------------------------------------
APIFY_TOKEN = os.environ.get("APIFY_TOKEN", "PASTE_YOUR_APIFY_API_TOKEN_HERE")
Actor ID/name: either "your-username/bluesky-startup-finder"
or the Actor's internal ID shown in Console (e.g. "abCdEfGhIjKlMnOpQ")
ACTOR_ID = "your-username/bluesky-startup-finder"
RUN_INPUT = { "searchTerms": [ "launching my startup", "we just raised", "building in public", "new startup", ], "maxPostsPerTerm": 50, "language": "en", "sortBy": "latest", }
OUTPUT_FILE = "bluesky_startup_results.json"
------------------------------------------------------------------------
def main() -> None: if APIFY_TOKEN == "PASTE_YOUR_APIFY_API_TOKEN_HERE": print("ERROR: Set your APIFY_TOKEN (env var or edit this script).", file=sys.stderr) sys.exit(1)
client = ApifyClient(APIFY_TOKEN)print(f"Starting run for actor: {ACTOR_ID}")print(f"Input: {json.dumps(RUN_INPUT, indent=2)}")# call() starts the run AND waits for it to finish (blocking)run = client.actor(ACTOR_ID).call(run_input=RUN_INPUT)print(f"Run finished with status: {run['status']}")print(f"Dataset ID: {run['defaultDatasetId']}")# Fetch all items from the run's default datasetitems = list(client.dataset(run["defaultDatasetId"]).iterate_items())print(f"Fetched {len(items)} posts")with open(OUTPUT_FILE, "w", encoding="utf-8") as f:json.dump(items, f, ensure_ascii=False, indent=2)print(f"Saved results to: {OUTPUT_FILE}")# Print a quick preview of the first few resultsfor item in items[:5]:print("-" * 60)print(f"@{item.get('authorHandle')}: {item.get('text')}")print(f" {item.get('postUrl')}")
if name == "main": main()