Apollo ACTION
Search Contacts
Searches for contacts in your Apollo CRM by keyword, stage, or sort criteria. Returns contact name, email, title, company, and stage. Use this to find contacts before updating them with Create or Update Contact or enrolling them with Add Contacts to Sequence. The
query parameter searches across name, title, company, and email. See the documentation- Action
- Read only
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Apollo account once, then configure and run Search Contacts from your backend or agent.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "apollo_io_oauth-search-contacts",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
apollo_io_oauth: { authProvisionId: "apn_xxxxxxx" },
query: "Query",
contactStageIds: ["Contact Stage IDs"],
},
})
console.log(result)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "apollo_io_oauth-search-contacts",
"configured_props": {
"apollo_io_oauth": { "authProvisionId": "apn_xxxxxxx" },
"query": "Query",
"contactStageIds": ["Contact Stage IDs"]
}
}'// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "apollo_io_oauth",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
name: "apollo_io_oauth-search-contacts",
arguments: {
query: "Query",
contactStageIds: ["Contact Stage IDs"],
},
})SCHEMA
Inputs
Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.
| Property | Type | Description |
|---|---|---|
query Query | string | Search keyword matching contact name, title, company, or email. Example: "John" or "acme.com". Optional |
contactStageIds Contact Stage IDs | string[] | Filter by one or more contact stage IDs. Use List Metadata (type contact_stages) to discover valid stage IDs. Optional |
sortByField Sort By Field | string | The field to sort results by. Optional |
sortAscending Sort Ascending | boolean | Set to true for ascending order, false for descending. Defaults to descending. Optional |
maxResults Max Results | integer | Maximum number of contacts to return. Defaults to 100. Max 600. Optional |
REFERENCE
Tool details
Behavior hints are published with the component in the Pipedream registry and surface as MCP tool annotations, so an agent can reason about a tool before it calls it.
- Registry key
- apollo_io_oauth-search-contacts
- Version
- 0.0.2
- App
- Apollo
- Authentication
- OAuth
- Read-only
- Yes
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗