Bluesky Startup Finder Scraper avatar

Bluesky Startup Finder Scraper

Pricing

from $0.01 / 1,000 results

Go to Apify Store
Bluesky Startup Finder Scraper

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

Biddut Hossain

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

2 months ago

Last modified

Share

""" Bluesky Startup Finder — Apify API Client (Python)

This script runs OUTSIDE the actor. Use it from your own machine/server to:

  1. Trigger a run of your deployed "bluesky-startup-finder" Actor on Apify.
  2. Wait for it to finish.
  3. 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 dataset
items = 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 results
for item in items[:5]:
print("-" * 60)
print(f"@{item.get('authorHandle')}: {item.get('text')}")
print(f" {item.get('postUrl')}")

if name == "main": main()