PhantomBuster
API Key aiautomationPhantomBuster
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Attach container — Attach to a running PhantomBuster container and stream its console output in real-time
- Launch agent — Launch a PhantomBuster automation agent asynchronously
- Fetch agent, org, lists — Get the output of the most recent container of an agent
- Completions ai — Get an AI text completion from PhantomBuster’s AI service
- Release branch — Release (promote to production) specified scripts on a branch in the current PhantomBuster organization
- Stop agent — Stop a currently running PhantomBuster agent execution
Authentication
Section titled “Authentication”This connector uses API Key authentication. Your users provide their PhantomBuster API key once, and Scalekit stores and manages it securely. Your agent code never handles keys directly — you only pass a connectionName and a user identifier.
Set up the connector
Register your PhantomBuster API key with Scalekit so it can authenticate and proxy automation requests on behalf of your users. PhantomBuster uses API key authentication — there is no redirect URI or OAuth flow.
-
Get your PhantomBuster API key
-
Sign in to phantombuster.com and go to Settings → API in the left sidebar.
-
Your API key is displayed on this page. Click the copy icon to copy it. If you need a new key, click Regenerate.

-
-
Create a connection in Scalekit
-
In Scalekit dashboard, go to Agent Auth → Create Connection. Find PhantomBuster and click Create.
-
Note the Connection name — you will use this as
connection_namein your code (e.g.,phantombuster).

-
-
Add a connected account
Connected accounts link a specific user identifier in your system to a PhantomBuster API key. Add accounts via the dashboard for testing, or via the Scalekit API in production.
Via dashboard (for testing)
-
Open the connection you created and click the Connected Accounts tab → Add account.
-
Fill in:
- Your User’s ID — a unique identifier for this user in your system (e.g.,
user_123) - API Key — the PhantomBuster API key you copied in step 1
- Your User’s ID — a unique identifier for this user in your system (e.g.,
-
Click Save.

Via API (for production)
await scalekit.actions.upsertConnectedAccount({connectionName: 'phantombuster',identifier: 'user_123',credentials: { api_key: 'your-phantombuster-api-key' },});scalekit_client.actions.upsert_connected_account(connection_name="phantombuster",identifier="user_123",credentials={"api_key": "your-phantombuster-api-key"}) -
Code examples
Once a connected account is set up, call the PhantomBuster API through the Scalekit proxy. Scalekit injects the API key as the X-Phantombuster-Key header automatically — you never handle credentials in your application code.
Proxy API calls
import { ScalekitClient } from '@scalekit-sdk/node';import 'dotenv/config';
const connectionName = 'phantombuster'; // connection name from your Scalekit dashboardconst identifier = 'user_123'; // your user's unique identifier
// Get your credentials from app.scalekit.com → Developers → Settings → API Credentialsconst scalekit = new ScalekitClient( process.env.SCALEKIT_ENV_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET);const actions = scalekit.actions;
// List all agents via Scalekit proxy — no API key needed hereconst result = await actions.request({ connectionName, identifier, path: '/api/v2/agents', method: 'GET',});console.log(result.data);import scalekit.client, osfrom dotenv import load_dotenvload_dotenv()
connection_name = "phantombuster" # connection name from your Scalekit dashboardidentifier = "user_123" # your user's unique identifier
# Get your credentials from app.scalekit.com → Developers → Settings → API Credentialsscalekit_client = scalekit.client.ScalekitClient( client_id=os.getenv("SCALEKIT_CLIENT_ID"), client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"), env_url=os.getenv("SCALEKIT_ENV_URL"),)actions = scalekit_client.actions
# List all agents via Scalekit proxy — no API key needed hereresult = actions.request( connection_name=connection_name, identifier=identifier, path="/api/v2/agents", method="GET")print(result)Scalekit tools
Use execute_tool to call PhantomBuster tools directly from your code. Scalekit resolves the connected account, injects the API key, and returns a structured response — no raw HTTP or credential management needed.
Launch an agent and retrieve results
The most common PhantomBuster workflow: launch an automation agent, stream its console output while it runs, then read the final result.
import scalekit.client, os, timefrom dotenv import load_dotenvload_dotenv()
scalekit_client = scalekit.client.ScalekitClient( client_id=os.getenv("SCALEKIT_CLIENT_ID"), client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"), env_url=os.getenv("SCALEKIT_ENV_URL"),)actions = scalekit_client.actions
connection_name = "phantombuster"identifier = "user_123"
# Step 1: Resolve the connected account for this userresponse = actions.get_or_create_connected_account( connection_name=connection_name, identifier=identifier)connected_account = response.connected_account
# Step 2: Find the agent you want to runagents = actions.execute_tool( tool_name="phantombuster_agents_fetch_all", connected_account_id=connected_account.id, tool_input={})agent_id = agents.result[0]["id"] # pick the first agent, or filter by name
# Step 3: Launch the agentlaunch_result = actions.execute_tool( tool_name="phantombuster_agent_launch", connected_account_id=connected_account.id, tool_input={ "id": agent_id, "output": "result-object", })container_id = launch_result.result["containerId"]print(f"Agent launched. Container ID: {container_id}")
# Step 4: Poll for output until the agent finishesoutput_pos = 0while True: output = actions.execute_tool( tool_name="phantombuster_container_fetch_output", connected_account_id=connected_account.id, tool_input={"id": container_id, "fromOutputPos": output_pos} ) print(output.result.get("output", ""), end="", flush=True) output_pos = output.result.get("nextOutputPos", output_pos) if output.result.get("status") in ("finished", "error"): break time.sleep(3) # poll every 3 seconds
# Step 5: Fetch the structured resultfinal_result = actions.execute_tool( tool_name="phantombuster_container_fetch_result", connected_account_id=connected_account.id, tool_input={"id": container_id})print("Scraped profiles:", final_result.result)Save scraped profiles as leads
After a scraping run, bulk-save extracted profiles to a PhantomBuster lead list for downstream CRM enrichment or outreach.
# First: fetch available lead lists (or create one in the PhantomBuster dashboard)lists = actions.execute_tool( tool_name="phantombuster_lists_fetch_all", connected_account_id=connected_account.id, tool_input={})list_id = lists.result[0]["id"] # use the first list, or filter by name
# Bulk-save up to 1,000 profiles in one call — more efficient than loopingactions.execute_tool( tool_name="phantombuster_leads_save_many", connected_account_id=connected_account.id, tool_input={ "listId": list_id, "leads": [ { "firstName": p.get("firstName"), "lastName": p.get("lastName"), "email": p.get("email"), "linkedinUrl": p.get("linkedinUrl"), "company": p.get("company"), "jobTitle": p.get("title"), "additionalFields": { "source": "phantombuster-scraper", "agentId": agent_id, "containerId": container_id, }, } for p in final_result.result ], })print(f"{len(final_result.result)} leads saved to list {list_id}.")Check resource usage before running agents
Avoid quota errors by verifying execution time and credit balances before launching a large scraping run.
resources = actions.execute_tool( tool_name="phantombuster_org_fetch_resources", connected_account_id=connected_account.id, tool_input={})
exec_time = resources.result.get("executionTime", {})ai_credits = resources.result.get("aiCredits", {})
if exec_time.get("remaining", 0) < 30: raise RuntimeError( f"Insufficient execution time: {exec_time.get('remaining')} min remaining. " "Upgrade at phantombuster.com/pricing or wait for your plan to reset." )
print(f"Execution time: {exec_time['remaining']} min remaining ({exec_time.get('used')} used)")print(f"AI credits: {ai_credits.get('remaining', 'N/A')}")Run AI completions on scraped data
Use PhantomBuster’s AI service to extract structured data from raw agent output — such as parsing job titles into seniority levels or extracting skills from profile summaries.
# Extract structured data from a raw LinkedIn profile headlinecompletion = actions.execute_tool( tool_name="phantombuster_ai_completions", connected_account_id=connected_account.id, tool_input={ "model": "gpt-4o", "messages": [ { "role": "system", "content": "Extract the seniority level and primary skill from this LinkedIn headline. Return JSON only.", }, { "role": "user", "content": "Senior Software Engineer at Acme Corp | React, TypeScript, GraphQL", }, ], "responseSchema": { "type": "object", "properties": { "seniority": {"type": "string", "enum": ["junior", "mid", "senior", "lead", "exec"]}, "primarySkill": {"type": "string"}, }, "required": ["seniority", "primarySkill"], }, })print("Parsed profile:", completion.result)# → {'seniority': 'senior', 'primarySkill': 'React'}LangChain integration
Let an LLM decide which PhantomBuster tool to call based on natural language. This example builds an agent that can manage automation runs and leads in response to user input.
import scalekit.client, osfrom dotenv import load_dotenvfrom langchain_openai import ChatOpenAIfrom langchain.agents import AgentExecutor, create_openai_tools_agentfrom langchain_core.prompts import ( ChatPromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate, MessagesPlaceholder, PromptTemplate)load_dotenv()
scalekit_client = scalekit.client.ScalekitClient( client_id=os.getenv("SCALEKIT_CLIENT_ID"), client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"), env_url=os.getenv("SCALEKIT_ENV_URL"),)actions = scalekit_client.actions
identifier = "user_123"
# Resolve connected account (API key auth — no OAuth redirect needed)actions.get_or_create_connected_account( connection_name="phantombuster", identifier=identifier)
# Load all PhantomBuster tools in LangChain formattools = actions.langchain.get_tools( identifier=identifier, providers=["PHANTOMBUSTER"], page_size=100)
prompt = ChatPromptTemplate.from_messages([ SystemMessagePromptTemplate(prompt=PromptTemplate( input_variables=[], template=( "You are a PhantomBuster automation assistant. " "Use the available tools to manage agents, check resource usage, " "manage leads, and analyse automation run results." ) )), MessagesPlaceholder(variable_name="chat_history", optional=True), HumanMessagePromptTemplate(prompt=PromptTemplate( input_variables=["input"], template="{input}" )), MessagesPlaceholder(variable_name="agent_scratchpad")])
llm = ChatOpenAI(model="gpt-4o")agent = create_openai_tools_agent(llm, tools, prompt)agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
result = agent_executor.invoke({ "input": "List all my agents, show which ones ran in the last 24 hours, and tell me how many leads are in each list"})print(result["output"])Tool list
Section titled “Tool list” phantombuster_agent_delete Permanently delete a PhantomBuster agent and all its associated data. This action is irreversible. 1 param
Permanently delete a PhantomBuster agent and all its associated data. This action is irreversible.
agentId string required The unique identifier of the agent to permanently delete. phantombuster_agent_fetch Retrieve details of a specific PhantomBuster agent by its ID. Returns agent name, script, schedule, launch type, argument configuration, and current status. 1 param
Retrieve details of a specific PhantomBuster agent by its ID. Returns agent name, script, schedule, launch type, argument configuration, and current status.
agentId string required The unique identifier of the agent to retrieve. phantombuster_agent_fetch_output Get the output of the most recent container of an agent. Designed for incremental data retrieval — use fromOutputPos to fetch only new output since the last call. 5 params
Get the output of the most recent container of an agent. Designed for incremental data retrieval — use fromOutputPos to fetch only new output since the last call.
id string required ID of the agent to fetch output from. fromOutputPos number optional Start output from this byte position (for incremental fetching). prevContainerId string optional Retrieve output from the container after this previous container ID. prevRuntimeEventIndex number optional Return runtime events starting from this index. prevStatus string optional Previously retrieved status from user-side (for delta detection). phantombuster_agent_launch Launch a PhantomBuster automation agent asynchronously. Starts the agent execution immediately and returns a container ID to track progress. Use the Get Container Output or Get Container Result tools to retrieve results. 4 params
Launch a PhantomBuster automation agent asynchronously. Starts the agent execution immediately and returns a container ID to track progress. Use the Get Container Output or Get Container Result tools to retrieve results.
agentId string required The unique identifier of the agent to launch. arguments object optional JSON object of input arguments to pass to the agent for this execution. output string optional Output mode for the launch response. saveArguments boolean optional Whether to persist the provided arguments as the agent's default arguments for future launches. phantombuster_agent_launch_soon Schedule a PhantomBuster agent to launch within a specified number of minutes. Useful for delayed execution without setting up a full recurring schedule. 4 params
Schedule a PhantomBuster agent to launch within a specified number of minutes. Useful for delayed execution without setting up a full recurring schedule.
id string required ID of the agent to schedule. minutes integer required Number of minutes from now after which the agent will launch. argument object optional Input arguments to pass to the agent for this execution (object or JSON string). saveArgument boolean optional If true, saves the provided argument as the agent's default for future launches. phantombuster_agent_save Create a new PhantomBuster agent or update an existing one. Supports configuring the script, schedule, proxy, notifications, execution limits, and launch arguments. Pass an ID to update; omit to create. 13 params
Create a new PhantomBuster agent or update an existing one. Supports configuring the script, schedule, proxy, notifications, execution limits, and launch arguments. Pass an ID to update; omit to create.
argument object optional Default launch argument for the agent (object or JSON string). branch string optional Script branch to use (e.g., main, staging). executionTimeLimit number optional Maximum execution time in seconds before the agent is killed. id string optional ID of the agent to update. Omit to create a new agent. launchType string optional How the agent is launched. maxParallelism number optional Maximum number of concurrent executions allowed for this agent. maxRetryNumber number optional Maximum number of retries before aborting on failure. name string optional Display name for the agent. proxyAddress string optional HTTP proxy address or proxy pool name. proxyPassword string optional Proxy authentication password. proxyType string optional Proxy configuration type. proxyUsername string optional Proxy authentication username. script string optional Script slug or name to assign to this agent. phantombuster_agent_stop Stop a currently running PhantomBuster agent execution. Gracefully halts the agent and saves any partial results collected up to that point. 1 param
Stop a currently running PhantomBuster agent execution. Gracefully halts the agent and saves any partial results collected up to that point.
agentId string required The unique identifier of the agent to stop. phantombuster_agents_fetch_all Retrieve all automation agents in the PhantomBuster organization. Returns agent IDs, names, associated scripts, schedules, and current status. 0 params
Retrieve all automation agents in the PhantomBuster organization. Returns agent IDs, names, associated scripts, schedules, and current status.
phantombuster_agents_fetch_deleted Retrieve all deleted agents in the PhantomBuster organization. Returns agent IDs, names, creation timestamps, deletion timestamps, and who deleted each agent. 0 params
Retrieve all deleted agents in the PhantomBuster organization. Returns agent IDs, names, creation timestamps, deletion timestamps, and who deleted each agent.
phantombuster_agents_unschedule_all Disable automatic launch for ALL agents in the current PhantomBuster organization. Agents will remain but will only run when launched manually. 0 params
Disable automatic launch for ALL agents in the current PhantomBuster organization. Agents will remain but will only run when launched manually.
phantombuster_ai_completions Get an AI text completion from PhantomBuster's AI service. Supports multiple models including GPT-4o and GPT-4.1-mini. Optionally request structured JSON output via a response schema. 3 params
Get an AI text completion from PhantomBuster's AI service. Supports multiple models including GPT-4o and GPT-4.1-mini. Optionally request structured JSON output via a response schema.
messages array required Array of conversation messages. Each must have a role (system, assistant, or user) and content string. model string optional AI model to use for the completion. temperature number optional Sampling temperature (0–2). Lower = more deterministic, higher = more creative. phantombuster_branch_create Create a new script branch in the current PhantomBuster organization. 1 param
Create a new script branch in the current PhantomBuster organization.
name string required Name for the new branch. Only letters, numbers, underscores, and hyphens allowed. Max 50 characters. phantombuster_branch_delete Permanently delete a branch by ID from the current PhantomBuster organization. 1 param
Permanently delete a branch by ID from the current PhantomBuster organization.
id string required ID of the branch to delete. phantombuster_branch_release Release (promote to production) specified scripts on a branch in the current PhantomBuster organization. 2 params
Release (promote to production) specified scripts on a branch in the current PhantomBuster organization.
name string required Name of the branch to release. scriptIds array required Array of script IDs to release on this branch. phantombuster_branches_fetch_all Retrieve all branches associated with the current PhantomBuster organization. 0 params
Retrieve all branches associated with the current PhantomBuster organization.
phantombuster_container_attach Attach to a running PhantomBuster container and stream its console output in real-time. Returns a live stream of log lines as the agent executes. 1 param
Attach to a running PhantomBuster container and stream its console output in real-time. Returns a live stream of log lines as the agent executes.
id string required ID of the running container to attach to. phantombuster_container_fetch Retrieve a single PhantomBuster container by its ID. Returns status, timestamps, launch type, exit code, and optionally the full output, result object, and runtime events. 5 params
Retrieve a single PhantomBuster container by its ID. Returns status, timestamps, launch type, exit code, and optionally the full output, result object, and runtime events.
id string required ID of the container to fetch. withNewerAndOlderContainerId boolean optional Set to true to include the IDs of the next and previous containers for this agent. withOutput boolean optional Set to true to include the container's console output. withResultObject boolean optional Set to true to include the container's result object. withRuntimeEvents boolean optional Set to true to include runtime events (progress, notifications, etc.). phantombuster_container_fetch_output Retrieve the console output and execution logs of a specific PhantomBuster container (agent run). Useful for monitoring execution progress, debugging errors, and viewing step-by-step agent activity. 1 param
Retrieve the console output and execution logs of a specific PhantomBuster container (agent run). Useful for monitoring execution progress, debugging errors, and viewing step-by-step agent activity.
containerId string required The unique identifier of the container whose output to retrieve. phantombuster_container_fetch_result Retrieve the final result object of a completed PhantomBuster container (agent run). Returns the structured data extracted or produced by the agent, such as scraped profiles, leads, or exported records. 1 param
Retrieve the final result object of a completed PhantomBuster container (agent run). Returns the structured data extracted or produced by the agent, such as scraped profiles, leads, or exported records.
containerId string required The unique identifier of the container whose result to retrieve. phantombuster_containers_fetch_all Retrieve all execution containers (past runs) for a specific PhantomBuster agent. Returns container IDs, status, launch type, exit codes, timestamps, and runtime events for each execution. 1 param
Retrieve all execution containers (past runs) for a specific PhantomBuster agent. Returns container IDs, status, launch type, exit codes, timestamps, and runtime events for each execution.
agentId string required The unique identifier of the agent whose containers to retrieve. phantombuster_leads_delete_many Permanently delete multiple leads from PhantomBuster organization storage by their IDs. 1 param
Permanently delete multiple leads from PhantomBuster organization storage by their IDs.
ids array required Array of lead IDs to delete. phantombuster_leads_fetch_by_list Fetch paginated leads belonging to a specific lead list in PhantomBuster organization storage. 5 params
Fetch paginated leads belonging to a specific lead list in PhantomBuster organization storage.
listId string required ID of the lead list to fetch leads from. includeTotalCount boolean optional Include the total count of leads in the response. paginationOffset integer optional Offset for pagination. paginationOrder string optional Sort order for pagination. paginationSize integer optional Number of leads per page. phantombuster_leads_save Save a single lead to PhantomBuster organization storage. 1 param
Save a single lead to PhantomBuster organization storage.
lead object required Lead data object to save. phantombuster_leads_save_many Save multiple leads at once to PhantomBuster organization storage. 1 param
Save multiple leads at once to PhantomBuster organization storage.
leads array required Array of lead objects to save. phantombuster_list_delete Permanently delete a lead list from PhantomBuster organization storage by its ID. 1 param
Permanently delete a lead list from PhantomBuster organization storage by its ID.
id string required ID of the lead list to delete. phantombuster_list_fetch Retrieve a specific lead list from PhantomBuster organization storage by its ID. 1 param
Retrieve a specific lead list from PhantomBuster organization storage by its ID.
id string required ID of the lead list to fetch. phantombuster_lists_fetch_all Retrieve all lead lists in the PhantomBuster organization's storage. 0 params
Retrieve all lead lists in the PhantomBuster organization's storage.
phantombuster_location_ip Retrieve the country associated with an IPv4 or IPv6 address using PhantomBuster's geolocation service. 1 param
Retrieve the country associated with an IPv4 or IPv6 address using PhantomBuster's geolocation service.
ip string required IPv4 or IPv6 address to look up. phantombuster_org_export_agent_usage Export a CSV file containing agent usage metrics for the current PhantomBuster organization over a specified number of days (max 6 months). 1 param
Export a CSV file containing agent usage metrics for the current PhantomBuster organization over a specified number of days (max 6 months).
days string required Number of days of usage data to export. Maximum is ~180 days (6 months). phantombuster_org_export_container_usage Export a CSV file containing container usage metrics for the current PhantomBuster organization. Optionally filter to a specific agent. 2 params
Export a CSV file containing container usage metrics for the current PhantomBuster organization. Optionally filter to a specific agent.
days string required Number of days of usage data to export. Maximum is ~180 days (6 months). agentId string optional Filter the export to a specific agent ID. phantombuster_org_fetch Retrieve details of the current PhantomBuster organization including plan, billing, timezone, proxy config, and CRM integrations. 4 params
Retrieve details of the current PhantomBuster organization including plan, billing, timezone, proxy config, and CRM integrations.
withCrmIntegrations boolean optional Include the organization's CRM integrations. withCustomPrompts boolean optional Include the organization's custom prompts. withGlobalObject boolean optional Include the organization's global object in the response. withProxies boolean optional Include the organization's proxy pool configuration. phantombuster_org_fetch_agent_groups Retrieve the agent groups and their ordering for the current PhantomBuster organization. 0 params
Retrieve the agent groups and their ordering for the current PhantomBuster organization.
phantombuster_org_fetch_resources Retrieve the current PhantomBuster organization's resource usage and limits. Returns daily and monthly usage for execution time, mail, captcha, AI credits, SERP credits, storage, and agent count. 0 params
Retrieve the current PhantomBuster organization's resource usage and limits. Returns daily and monthly usage for execution time, mail, captcha, AI credits, SERP credits, storage, and agent count.
phantombuster_org_fetch_running_containers List all currently executing containers across the PhantomBuster organization. Returns container IDs, associated agent IDs/names, creation timestamps, launch types, and script slugs. 0 params
List all currently executing containers across the PhantomBuster organization. Returns container IDs, associated agent IDs/names, creation timestamps, launch types, and script slugs.
phantombuster_org_save_agent_groups Update the agent groups and their ordering for the current PhantomBuster organization. The order of groups and agents within groups is preserved as provided. 1 param
Update the agent groups and their ordering for the current PhantomBuster organization. The order of groups and agents within groups is preserved as provided.
agentGroups array required Array of agent groups. Each item is either an agent ID string or an object with id, name, and agents array. phantombuster_org_save_crm_contact Save a new contact to the organization's connected CRM (HubSpot). Requires a CRM integration to be configured in the PhantomBuster organization settings. 8 params
Save a new contact to the organization's connected CRM (HubSpot). Requires a CRM integration to be configured in the PhantomBuster organization settings.
crmName string required The CRM to save the contact to. firstname string required Contact's first name. lastname string required Contact's last name. pb_linkedin_profile_url string required LinkedIn profile URL of the contact. company string optional Company the contact works at. email string optional Contact's email address. jobtitle string optional Contact's job title. phone string optional Contact's phone number. phantombuster_script_fetch Retrieve a specific PhantomBuster script by ID including its manifest, argument schema, output types, and optionally the full source code. 3 params
Retrieve a specific PhantomBuster script by ID including its manifest, argument schema, output types, and optionally the full source code.
id string required ID of the script to fetch. branch string optional Branch of the script to fetch. withCode boolean optional Set to true to include the script's source code in the response. phantombuster_scripts_fetch_all Retrieve all scripts associated with the current PhantomBuster user. Returns script IDs, names, slugs, descriptions, branches, and manifest details. 3 params
Retrieve all scripts associated with the current PhantomBuster user. Returns script IDs, names, slugs, descriptions, branches, and manifest details.
branch string optional Filter scripts by branch name. exclude string optional Exclude modules or non-modules from results. org string optional Filter scripts by organization.