CONNECT APP
Build with Apify (OAuth)
Developer Tools
- OAuth
MCP
Give your agent Apify (OAuth) tools
Every Apify (OAuth) action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's Apify (OAuth) account for each tool call — you store no tokens.
// 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": "apify_oauth",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Get Dataset Items:
const result = await mcp.callTool({
name: "apify_oauth-get-dataset-items",
arguments: {
datasetId: "Dataset ID",
clean: true,
},
})# access_token: mint a short-lived token with the Connect SDK — see the MCP guide
headers = {
"Authorization": f"Bearer {access_token}",
"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": "apify_oauth",
}
async with streamablehttp_client("https://remote.mcp.pipedream.net/v3", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# e.g. run Get Dataset Items:
result = await session.call_tool("apify_oauth-get-dataset-items", {
"datasetId": "Dataset ID",
"clean": True,
})API PROXY
Call the Apify (OAuth) API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the Apify (OAuth) API with the connected user's credentials attached. You store no tokens and write no refresh logic.
const resp = await pd.proxy.get({
externalUserId: "{external_user_id}", // any stable ID for this user in your system
accountId: "apn_xxxxxxx",
url: "https://api.example.com/v1/me",
})
// Any allowed Apify (OAuth) endpoint works here. Pipedream attaches the
// connected account's credentials to the outgoing request.# The path segment is the target URL, URL-safe base64 encoded:
# https://api.example.com/v1/me
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvbWU?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run Apify (OAuth) actions from your backend
Connect a user's Apify (OAuth) account once, then run Get Dataset Items on their behalf from your own code — TypeScript, Python, or plain HTTP.
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: "apify_oauth-get-dataset-items",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
apify_oauth: { authProvisionId: "apn_xxxxxxx" },
datasetId: "Dataset ID",
clean: true,
},
})from pipedream import Pipedream
pd = Pipedream(
client_id="{oauth_client_id}",
client_secret="{oauth_client_secret}",
project_id="{project_id}",
project_environment="production",
)
result = pd.actions.run(
id="apify_oauth-get-dataset-items",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"apify_oauth": {"authProvisionId": "apn_xxxxxxx"},
"datasetId": "Dataset ID",
"clean": True,
},
)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": "apify_oauth-get-dataset-items",
"configured_props": {
"apify_oauth": { "authProvisionId": "apn_xxxxxxx" },
"datasetId": "Dataset ID",
"clean": true
}
}'TOOLS
Apify (OAuth) actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Get Dataset Items
actionReturns data stored in a dataset. See the documentationRead-onlyv0.0.3 -
Get Key-Value Store Record
actionGets a record from a key-value store. See the documentationRead-onlyv0.0.1 -
Run Actor
actionPerforms an execution of a selected Actor in Apify. See the documentationWritev0.0.3 -
Run Task
actionRun a specific task and optionally wait for its termination. Not for use with Pipedream Connect. See the documentationWritev0.0.1 -
Run Task Synchronously
actionRun a specific task and return its dataset items. See the documentationWritev0.0.3 -
Scrape Single URL
actionExecutes a scraper on a specific website and returns its content as HTML. This action is perfect for extracting content from a single page. See the documentationWritev0.0.3 -
Set Key-Value Store Record
actionCreate or update a record in an Apify Key-Value Store. Supports strings, numbers, booleans, null, arrays, and objects. Automatically infers content type (JSON vs. plain text).Writev0.0.3
EVENTS
Apify (OAuth) triggers
Event sources your backend can deploy for users and receive through a webhook.
MULTI-APP
Use Apify (OAuth) with other popular apps
Most products don't stop at one integration. Pair Apify (OAuth) with the other apps your users rely on, and ship use cases that span both.
- App slug
- apify_oauth
- Authentication
- OAuth
- Categories
- Developer Tools
- Actions
- 7
- Triggers
- 2
- API proxy
- Available
OAuth scopes
These are the scopes Pipedream's managed Apify (OAuth) OAuth client requests when one of your users connects an account. Supply your own OAuth client to request a different set.
- full_api_access