String API
Platform Integrations

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:

ActionWhat it does
Fetch URLReturns 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 URLReturns only the fields a JSON schema describes, extracted from the page with AI. See Structured extraction.
Send Request to URLSends a POST, PUT or PATCH with a body, for endpoints that only answer a request, such as a GraphQL API.
Search WebReturns 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:

FieldValue
URLhttps://request.usestring.ai/v1/fetch
Payload TypeJSON
Dataurl → the page to fetch, format → markdown
HeadersAuthorization → 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 target
  • headers — 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 jsonSchema in the request body — see Structured extraction.