Integración

Usa Shifter con Zapier

Zapier no expone un campo de proxy nativo, pero la acción Code by Zapier y la acción Webhooks by Zapier permiten realizar solicitudes salientes a través de la Web Scraping API de Shifter con unas pocas líneas de JavaScript o Python.

Inicio rápido

Instalar

// Add a 'Code by Zapier' or 'Webhooks by Zapier' action — no install required.

Uso básico

// In a "Code by Zapier" (Run JavaScript) action:
const apiKey    = inputData.shifter_api_key;
const targetUrl = inputData.target_url;
const country   = inputData.country || "us";

const params = new URLSearchParams({
  api_key:    apiKey,
  url:        targetUrl,
  country:    country,
  render_js:  "1",
  session_id: inputData.zap_run_id,   // sticky residential IP for this run
});

const response = await fetch(`https://scrape.shifter.io/v1?${params}`);
const html     = await response.text();

output = { html, status: response.status, length: html.length };

Características

Funciona en todos los planes de Zapier que incluyen Code by Zapier o Webhooks by Zapier
Entorno de ejecución JavaScript o Python: elige el que mejor se adapte a tu equipo
IPs residenciales persistentes por ejecución de Zap pasando session_id (por ejemplo, el ID de ejecución del Zap)
Segmentación geográfica en 195+ países mediante el parámetro de consulta country
El renderizado integrado de navegador sin interfaz gráfica (render_js=1) gestiona páginas con mucho JavaScript sin pasos adicionales
Compatible con Storage by Zapier y Vault para la gestión de credenciales

Ejemplos

Code by Zapier: JavaScript con sesión persistente

Ejecuta un paso JS personalizado que obtiene una página a través de la Web Scraping API de Shifter. Pasa un session_id derivado del ID de ejecución del Zap para que cada paso de una ejecución comparta una misma IP residencial.

// "Code by Zapier" action -> Run JavaScript
//
// inputData.target_url      -> https://example.co.uk/products
// inputData.country         -> "uk"
// inputData.shifter_api_key -> your Shifter API key (Storage by Zapier secret)
// inputData.zap_run_id      -> Zap run id from the trigger

const params = new URLSearchParams({
  api_key:    inputData.shifter_api_key,
  url:        inputData.target_url,
  country:    inputData.country || "us",
  render_js:  "1",                       // headless browser
  session_id: inputData.zap_run_id,      // sticky IP per Zap run
});

const response = await fetch(`https://scrape.shifter.io/v1?${params}`);
const html     = await response.text();

// Extract a value with a regex — Zapier's Code action doesn't bundle cheerio.
const titleMatch = html.match(/<title>([\s\S]*?)<\/title>/i);
const priceMatch = html.match(/class=["']price["'][^>]*>([^<]+)/i);

output = {
  status: response.status,
  title:  titleMatch?.[1]?.trim(),
  price:  priceMatch?.[1]?.trim(),
  length: html.length,
};

Code by Zapier: Python (urllib)

El entorno de ejecución Python de Zapier es suficiente para llamar a la Web Scraping API y analizar la respuesta. Útil cuando prefieres escribir en Python y necesitas acceso a la biblioteca estándar.

# "Code by Zapier" action -> Run Python
import urllib.request
import urllib.parse
import re

params = urllib.parse.urlencode({
    "api_key":    input_data["shifter_api_key"],
    "url":        input_data["target_url"],
    "country":    input_data.get("country", "us"),
    "render_js":  "1",
    "session_id": input_data["zap_run_id"],
})

req = urllib.request.Request(
    f"https://scrape.shifter.io/v1?{params}",
    headers={"User-Agent": "ZapierShifterClient/1.0"},
)

with urllib.request.urlopen(req, timeout=30) as resp:
    html   = resp.read().decode("utf-8", errors="replace")
    status = resp.status

# Extract whatever the Zap needs.
title  = (re.search(r"<title>(.*?)</title>", html, re.IGNORECASE | re.DOTALL) or [None, ""])[1].strip()
prices = re.findall(r'class="price"[^>]*>([^<]+)', html)

return {
    "status": status,
    "title":  title,
    "prices": prices[:10],
}

Webhooks by Zapier: solicitud personalizada

Si tu Zap no permite pasos de código (en algunos planes), usa la acción 'Custom Request' de Webhooks by Zapier y llama a la Web Scraping API directamente con parámetros de consulta.

# Action: Webhooks by Zapier -> Custom Request
#
# Method:  GET
# URL:     https://scrape.shifter.io/v1
# Query String Params:
#   api_key    = {{credentials.shifter_api_key}}
#   url        = {{trigger.target_url}}
#   country    = us
#   render_js  = 1
#   session_id = {{trigger.zap_run_id}}
#
# Headers:
#   User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
#
# Output:
#   The response body is the fully-rendered HTML, returned to Zapier
#   as a single output field. Pipe it into a Filter, Formatter, or
#   another Code step to parse what you need.
#
# Notes:
# - session_id uses the Zap run id so all requests within one run
#   share the same residential IP (sticky session, 10 min default).
# - country can be sourced from a previous step
#   ({{step1.country}}) for per-item geo routing.

Storage by Zapier: gestión de secretos

No pegues la clave de API directamente en las acciones de código. Usa Storage by Zapier (o Zapier Vault en planes enterprise) para mantener tu clave de API de Shifter cifrada y reutilizable en todos tus Zaps.

// One-off setup (run once via Code by Zapier):
//
//   await fetch("https://store.zapier.com/api/records", {
//     method: "POST",
//     headers: { "X-Secret": ZAPIER_STORAGE_SECRET },
//     body: JSON.stringify({
//       shifter_api_key: "YOUR_SHIFTER_API_KEY",
//     }),
//   });
//
// Then in any future Zap that needs the Shifter API key:

const storageRes = await fetch(
  "https://store.zapier.com/api/records?key=shifter_api_key",
  { headers: { "X-Secret": process.env.ZAPIER_STORAGE_SECRET } },
);
const { shifter_api_key } = await storageRes.json();

const params = new URLSearchParams({
  api_key:    shifter_api_key,
  url:        inputData.target_url,
  country:    "us",
  render_js:  "1",
  session_id: inputData.run_id,
});

const response = await fetch(`https://scrape.shifter.io/v1?${params}`);
// ... use response as in the previous examples
Preguntas frecuentes

Preguntas frecuentes

Preguntas frecuentes sobre el uso de Shifter con Zapier.

Not on the standard Webhooks action — Zapier's HTTP layer doesn't expose a proxy field. The supported workarounds are Code by Zapier (run a JavaScript or Python step that calls the Shifter Web Scraping API) or the Webhooks Custom Request action pointed at https://scrape.shifter.io/v1 with the country, render_js, and session_id query params.

Comenzar

Empieza a usar Shifter con Zapier

Añade los más de 205M de proxies residenciales y de ISP de Shifter a tus Zaps mediante Code by Zapier o Webhooks Custom Request. Sesiones sticky por ejecución, geo por elemento, renderizado headless integrado y soporte completo para credenciales con Storage / Vault.

Prueba Shifter gratisConfiguración en minutos. Cancela cuando quieras.