Zapier
Add the String Web Access app to a Zap, or call String from a Webhooks by Zapier action.
The String Web Access app adds fetch, extraction, request and search actions to any Zap. It is invite-only until it is published in Zapier's app directory, so add it through the invite link below. For an endpoint or option the app does not cover, call the API from Webhooks by Zapier instead.
Add the String Web Access app
Accept the invite
Open the invite link while signed in to Zapier and accept it. The app then appears in the Zap editor for your account.
Connect your account
Add an action step, search for String Web Access, and connect it with your API key from the String dashboard. See Authentication.
The app has four actions:
| Action | What it does |
|---|---|
| Fetch URL | Returns a page as Markdown, raw content or JSON, with options for main content only, JavaScript rendering and the country to route through. |
| Extract Data From URL | Returns only the fields a JSON schema describes, extracted from the page with AI. See Structured extraction. |
| Send Request to URL | Sends a POST, PUT or PATCH with a body, for endpoints that only answer a request, such as a GraphQL API. |
| Search Web | Returns the organic results for a query, with engine, country and language options. |
Webhooks by Zapier
Any Zap can also call the API directly through the built-in Webhooks by Zapier action. Use it for
anything the app does not expose, such as /v1/sitemap or an
actions array.
Webhooks by Zapier needs a paid plan
Webhooks by Zapier is unavailable on the Free plan. Code by Zapier is available there, but its runtime is capped at 1 second on Free against 30 seconds on Professional and Team — and a real page fetch usually takes longer than that, so the step times out. Plan on Professional or above.
Configure the action
Add an action step, choose Webhooks by Zapier, and pick the POST event. Then:
| Field | Value |
|---|---|
| URL | https://request.usestring.ai/v1/fetch |
| Payload Type | JSON |
| Data | url → the page to fetch, format → markdown |
| Headers | Authorization → Bearer YOUR_API_KEY |
Data takes one key and value per row, so url and format are two rows. Map the url value to a
field from an earlier step the same way as anywhere else in Zapier.
Leave Basic Auth empty — String authenticates with the bearer header above, and filling both
sends two competing Authorization headers.
Custom Request for nested bodies
Data rows are flat key/value pairs, so a nested body — a jsonSchema, or an actions array —
needs the Custom Request event instead. Set Method to POST, paste the whole JSON body into
Data, and add Content-Type: application/json to Headers alongside the Authorization
header. Custom Request sends exactly what you give it and parses nothing.
Read the response
Zapier parses the JSON response, so later steps can use each field directly:
data— the page content, Markdown when you asked for"format": "markdown"statusCode— the status String got from the targetheaders— the response headers from the target
Code by Zapier
When the request needs building rather than filling in, use a Code by Zapier step with JavaScript
selected. It runs Node.js 22 with fetch available by default:
const response = await fetch("https://request.usestring.ai/v1/fetch", {
method: "POST",
headers: {
Authorization: `Bearer ${inputData.apiKey}`,
"Content-Type": "application/json"
},
body: JSON.stringify({ url: inputData.url, format: "markdown" })
});
const result = await response.json();
output = [{ content: result.data, statusCode: result.statusCode }];Values come from the Input Data fields you define on the step, so pass apiKey and url that
way rather than hardcoding them — that keeps the key out of the code itself. The step returns
whatever you assign to output.
Mind the runtime cap above: on Free this step gets 1 second, which a page fetch will usually exceed.
Handling failures
Zapier stops a Zap when a step errors, so a blocked or missing page halts the run. Use
Paths branching on statusCode when a Zap
should continue either way. The codes and their bodies are in
Access control.
Watch the task count
Every step costs a task, which makes it worth folding work into the request itself:
"format": "markdown"returns clean text, so no formatting step is needed before an AI action.- A JSON schema returns just the fields you want, replacing a Formatter step. Use the app's
Extract Data From URL action, or put a
jsonSchemain the request body — see Structured extraction.