Run Apify Actors and tasks, poll runs, and read or write the datasets and key-value stores they produce.
Apify ships in the w6w first-party pack. It declares 31 actions, 3 health checks, and the host runs its code in a sandbox that never sees the credential.
io.w6w.apifyApify runs Actors — containerized scraping and automation programs, either your own or one of the tens of thousands published in Apify Store — and gives a workflow the three-beat path most Apify automations need: start a run, poll it, and read the dataset or key-value store it produces.
Beyond starting and monitoring Actor and Task runs, this app covers the Actor’s full output lifecycle: creating and listing datasets, pushing and reading their items, and reading or writing key-value store records, plus webhooks for reacting to a run’s completion instead of polling for it.
It also surfaces account-level visibility that a workflow needs to run safely at scale — current usage and plan limits across compute, proxy traffic, and concurrent runs — so a workflow can check headroom before kicking off an expensive crawl. Health checks track Apify’s own status page alongside that live quota, and the app quietly protects a few working credentials that Apify’s own read endpoints would otherwise hand back in plain sight.
Three routes to the same 31 actions. The Workflow tab is generated from Apify's own manifest and carries its real ids, so it is copy-pasteable; the Code and CLI examples are the same call for any action on any app, so every app-specific value in them is a blank you fill in.
account-get Fetch the connected Apify account's profile. The Apify Proxy password is removed from the response.
account-limits-get Read the account's plan limits and current usage against them.
account-usage-get Read the account's usage for a monthly cycle, including the daily breakdown and totals.
actor-run Start an Actor run and return the run object immediately, without waiting for it to finish.
actor-run-sync-get-items Run an Actor, wait for it to finish (up to 300 seconds) and return its dataset items.
dataset-create Create a dataset. With a name this is get-or-create; without one it creates a new unnamed dataset every time.
dataset-get Fetch one dataset's metadata and item counts. The URL-signing secret is removed from the response.
dataset-items-get Read items from a dataset, with optional field selection and reshaping.
dataset-list List the account's datasets. Named ones only, unless unnamed are included.
key-value-store-get Fetch one key-value store's metadata. The URL-signing secret is removed from the response.
key-value-store-keys-list List the record keys in a key-value store, with their sizes.
key-value-store-list List the account's key-value stores. Named ones only, unless unnamed are included.
record-get Read one record from a key-value store, with the content type it was stored under.
run-list List Actor runs across the account, optionally filtered by status and start date.
run-resurrect Restart a finished, failed, aborted or timed-out run against its existing storages.
store-search Search the public Apify Store for Actors by text, category, author or pricing.
task-run-sync-get-items Run an Actor task, wait for it to finish (up to 300 seconds) and return its dataset items.
webhook-create Create a webhook that fires when an Actor run or build reaches one of the chosen states.
webhook-list List the account's webhooks. Results include each webhook's header template, which may contain secrets you configured.
A workflow step names the app and the action, and the editor fills in the
connection when you pick one. This is the Step shape from the
workflow spec, carrying Apify's real ids.
{
"manifestVersion": "2",
"name": "apify-example",
"steps": [
{
"id": "actor-get",
"uses": {
"app": "io.w6w.apify",
"action": "actor-get",
"connection": "conn_YOUR_CONNECTION_ID"
},
"with": {
"actorId": "<actorId>"
}
}
]
}actor-get account-get account-limits-get account-usage-get actor-list +26 more actions available
Every app-specific value here is a blank you have to fill in. An
app action is reached through the connection that authenticates it, so the
address is a connection id, not the app id — and connections belong to your account,
so a public page cannot know yours. Create one for Apify, then fill in
the three blanks: conn_YOUR_CONNECTION_ID, the action key, and the
parameters that action declares. The call itself is real — the shape is transcribed
from the studio's own snippet builder, which prints the same kind of blanks — but
nothing in it is specific to Apify. The Workflow tab is where this app's
real ids are.
npm install @w6w/sdkyarn add @w6w/sdkpnpm add @w6w/sdkdeno add npm:@w6w/sdkimport { W6wClient, isActionRun } from "@w6w/sdk";
// Reads W6W_BASE_URL and W6W_TOKEN from the environment when omitted.
const client = new W6wClient();
const envelope = await client.run({
urn: "conn_YOUR_CONNECTION_ID",
action: "actor-run",
payload: {
actorId: "<value>",
// input: "<value>",
// waitForFinish: "<value>",
// build: "<value>",
// timeout: "<value>",
// memory: "<value>",
// maxItems: "<value>",
// maxTotalChargeUsd: "<value>",
},
});
if (isActionRun(envelope)) console.log(envelope.value); npm install -g @w6w/cli w6w run conn_YOUR_CONNECTION_ID --action actor-run --payload '{"actorId":"<value>"}' Give an AI agent Apify — without giving it Apify's credentials. One MCP endpoint exposes every app, function and workflow the caller is entitled to, as tools it can discover and run. Access is granted per team while we onboard.
One tool call{
"name": "w6w_invoke",
"arguments": {
"ref": "app:io.w6w.apify#actor-get",
"input": {
"actorId": "<actorId>"
}
}
}
Every tool names its target with a single ref. The
app: form above doesn't name a connection at all — the
host resolves which of the caller's Apify connections to sign
with, and refuses rather than guesses when the answer is ambiguous.
The token is attached host-side, at the moment of the call. It is never a tool argument, never in the model's context, and never in a transcript — so a prompt injection has nothing to exfiltrate.
Tools are derived per end user from what that person has actually connected and is entitled to — not one shared bot identity carrying the union of everyone's access.
Multi-step work runs on the workflow engine and returns a run handle the agent can poll — retries, branching and state survive the conversation that started them.
Apify's declared health checks are on the surface too, so an agent can tell "the vendor is down" from "your credential expired" before it burns a retry on either.
The MCP surface is part of the hosted platform. Apify itself is MIT, and the runtime that executes it is source-available (FSL).
Apify declares its own checks, so its health is a property of the app rather than something the host guesses at.
Component status from status.apify.com. Covers the API, Console, Actors, Scheduler, Webhooks, the three storage services and the three proxy services, plus the external services (AWS, Stripe, Mailgun, npm) Apify itself depends on.
Monthly spend, compute units, data transfer, proxy SERPs and residential proxy traffic, plus concurrency and Actor/task counts, read from GET /v2/users/me/limits.