AI Crawler Guardrails

AI Scrapers & Crawler Guardrails

As web agents become more autonomous, they need a consistent way to read the machine-readable boundaries publishers expose. AgentPermission evaluates those signals before scraping, summarizing, or extracting content; it does not replace review of applicable terms or law.

Scraper Workflow

Integrating a preflight check lets your scraping pipeline apply publisher-declared machine-readable signals consistently before downloading or parsing a page. It does not determine legal authorization.

Key Principle: Check permission boundaries before sending heavy request payloads. This reduces server load and establishes a clear intent log.

Step-by-Step Guardrail Implementation

  • Step 1: Intercept URL - Catch the target URL before passing it to your crawler client.
  • Step 2: API Preflight Check - Query the AgentPermission check endpoint using action crawl or extract.
  • Step 3: Evaluate Decision - Treat allow as evidence that the checked signals support proceeding, subject to your own controls. If deny, log the policy skip and bypass the URL.
  • Step 4: Store Audit Receipt - Save the service-signed receipt alongside the job so reviewers can reconstruct which signals were checked.

Checking Crawl and Extract Actions

Depending on whether your bot is doing broad indexing or specific detail harvesting, choose between the crawl and extract actions.

1. The "crawl" Action

Evaluates robots.txt path rules for the user-agent supplied with the check, such as GPTBot, ClaudeBot, or your crawler's own identifier.

2. The "extract" Action

Evaluates publisher-declared signals relevant to structured scraping before your own extractor fetches or stores page content. It does not inspect the requested page body, headers, article fields, or tables.

Python Scraper Preflight Example
import requests

def fetch_content_safely(url):
    # Verify crawl permission first
    preflight = requests.post(
        "https://agent-permission-api-788656703262.us-central1.run.app/v1/check",
        headers={"Authorization": "Bearer apk_live_your_key"},
        json={"url": url, "action": "crawl"}
    ).json()
    
    if preflight.get("decision") != "allow":
        print(f"Skipping {url} due to rules: {preflight.get('reasons')}")
        return None
        
    # Proceed with crawl
    response = requests.get(url)
    return response.text

Why Preflight Checking Matters

Running preflight checks protects your systems and project integrity from:

  • IP Bans and Rate Limiting: Sending queries to sites that disallow AI agents leads to server-side firewalls and IP blocking.
  • Terms and rights review: Machine-readable signals are useful evidence, but they do not replace review of applicable terms, licenses, or law.
  • Auditing and Transparency: Signed receipts document the URL hash, action, decision, source hashes, and check time for later review.

Add a Policy Check Before Ingestion

Check publisher signals before a crawler, RAG loader, extraction job, or training pipeline stores web content.