professionally-me / src /fetch_linkedin.py
cmn22's picture
Deploy to HF Spaces
a5aa293
import json
import os
from apify_client import ApifyClient
from dotenv import load_dotenv
load_dotenv(override=True)
CONFIG_PATH = "config.json"
OUTPUT_PATH = "data/linkedin.json"
def fetch_linkedin_profile(linkedin_url: str, actor_id: str) -> list:
client = ApifyClient(os.getenv("APIFY_TOKEN"))
run = client.actor(actor_id).call(run_input={
"queries": [linkedin_url],
"profileScraperMode": "Profile details no email ($4 per 1k)",
})
return list(client.dataset(run["defaultDatasetId"]).iterate_items())
def main():
with open(CONFIG_PATH, "r", encoding="utf-8") as f:
config = json.load(f)
linkedin_url = config["linkedin_url"]
actor_id = config["apify_actor_id"]
print(f"Scraping {linkedin_url} via Apify actor {actor_id} ...")
profiles = fetch_linkedin_profile(linkedin_url, actor_id)
with open(OUTPUT_PATH, "w", encoding="utf-8") as f:
json.dump(profiles, f, indent=2, ensure_ascii=False)
print(f"Saved {len(profiles)} profile(s) to {OUTPUT_PATH}")
if __name__ == "__main__":
main()