Land every run in S3
An append-only archive of every run, keyed by time.
Give the Import.io extractor a Lambda function URL as its webhook. On each successful run the function checks a shared secret and lands the latest results where you want them.
import gzip, os, urllib.request
import boto3
s3 = boto3.client("s3")
def handler(event, context):
if event.get("headers", {}).get("x-webhook-secret") != os.environ["WEBHOOK_SECRET"]:
return {"statusCode": 401}
with urllib.request.urlopen(os.environ["IMPORTIO_JSON_URL"]) as r:
body = r.read()
if body[:2] == b"\x1f\x8b": # gzip-compressed
body = gzip.decompress(body)
s3.put_object(Bucket=os.environ["BUCKET"],
Key=f"importio/{context.aws_request_id}.ndjson", Body=body)
return {"statusCode": 204}Any public page, rendered, through managed proxies
Rendering, proxy routing, captcha handling, extraction
POST on every successful run
A function URL that lands every run in S3 or DynamoDB.
Also connects via data endpoints.
An append-only archive of every run, keyed by time.
Publish a run-complete event and let other services react.
Upsert rows into DynamoDB, Aurora or Redshift from the same function.
WEBHOOK_SECRET and IMPORTIO_JSON_URL as environment variables.It keeps the function independent of payload shape and the download doesn’t count as a query. The payload also links to the run’s own JSON, CSV and Excel files if you prefer those.
Every time a crawl run finishes successfully. Import.io POSTs to your URL with the extractor ID, total URL count and links to the run’s JSON, CSV and Excel outputs. You can view a sample payload in the extractor’s settings.
Webhooks accept custom headers. Add a shared-secret header in the extractor’s webhook settings and reject any request that doesn’t carry it.
No. The latest-run CSV, JSON and Google Sheets endpoints return data your extractor already collected, so they don’t count toward your plan. Only the Live Query API runs an extraction per request.
As fresh as your schedule. Run the extractor hourly, daily or weekly and the endpoint always serves the latest successful run.
An HTTP function that lands each run in Cloud Storage.
Setup 15 minWebhookEndpointStart a Zap every time an Import.io run succeeds.
Setup 5 minWebhookA custom webhook scenario that runs on every successful extraction.
Setup 5 minS3 / SFTPManagedEvery run delivered into your bucket, on schedule.
Setup 10 min