{
  "openapi": "3.1.0",
  "info": {
    "title": "Crawl",
    "description": "Web scraping and search for AI agents. 11 endpoints \u2014 read, scrape, search, extract, metadata, links, sitemap, feed, crawl, summarize, compare. Pay per request in USDC via x402.",
    "version": "1.0.0",
    "x-guidance": "Crawl provides web data for AI agents. All endpoints require x402 micropayments in USDC on Base chain. Start with /api/search to find content, then /api/scrape for full page content, /api/extract for structured data.",
    "contact": {
      "email": "crawl@orbonomy.xyz",
      "name": "Crawl",
      "url": "https://crawoul.vercel.app"
    }
  },
  "servers": [
    {
      "url": "https://crawoul.vercel.app",
      "description": "Production"
    }
  ],
  "paths": {
    "/api/read": {
      "post": {
        "operationId": "read",
        "summary": "Read any URL as plain text",
        "tags": [
          "Read"
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.0100000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "description": "URL to read as plain text"
                  }
                },
                "required": [
                  "url"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Read any URL as plain text",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "success",
                    "data"
                  ]
                }
              }
            }
          },
          "402": {
            "description": "Payment Required"
          }
        },
        "security": []
      }
    },
    "/api/scrape": {
      "post": {
        "operationId": "scrape",
        "summary": "Scrape any URL into clean markdown",
        "tags": [
          "Scrape"
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.0200000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "description": "URL to scrape and convert to markdown"
                  }
                },
                "required": [
                  "url"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Scrape any URL into clean markdown",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "success",
                    "data"
                  ]
                }
              }
            }
          },
          "402": {
            "description": "Payment Required"
          }
        },
        "security": []
      }
    },
    "/api/search": {
      "post": {
        "operationId": "search",
        "summary": "Web search with AI-generated answers",
        "tags": [
          "Search"
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.0300000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "query": {
                    "type": "string",
                    "description": "Search query"
                  },
                  "num": {
                    "type": "integer",
                    "description": "Number of results (default 10)"
                  }
                },
                "required": [
                  "query"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Web search with AI-generated answers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "success",
                    "data"
                  ]
                }
              }
            }
          },
          "402": {
            "description": "Payment Required"
          }
        },
        "security": []
      }
    },
    "/api/extract": {
      "post": {
        "operationId": "extract",
        "summary": "Extract structured data from any URL",
        "tags": [
          "Extract"
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.0500000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "description": "URL to extract structured data from"
                  }
                },
                "required": [
                  "url"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Extract structured data from any URL",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "success",
                    "data"
                  ]
                }
              }
            }
          },
          "402": {
            "description": "Payment Required"
          }
        },
        "security": []
      }
    },
    "/api/metadata": {
      "post": {
        "operationId": "metadata",
        "summary": "Extract page metadata",
        "tags": [
          "Metadata"
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.0100000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "description": "URL to extract metadata from"
                  }
                },
                "required": [
                  "url"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Extract page metadata",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "success",
                    "data"
                  ]
                }
              }
            }
          },
          "402": {
            "description": "Payment Required"
          }
        },
        "security": []
      }
    },
    "/api/links": {
      "post": {
        "operationId": "links",
        "summary": "Extract all links from a page",
        "tags": [
          "Links"
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.0200000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "description": "URL to extract links from"
                  }
                },
                "required": [
                  "url"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Extract all links from a page",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "success",
                    "data"
                  ]
                }
              }
            }
          },
          "402": {
            "description": "Payment Required"
          }
        },
        "security": []
      }
    },
    "/api/sitemap": {
      "post": {
        "operationId": "sitemap",
        "summary": "Parse sitemap.xml from a domain",
        "tags": [
          "Sitemap"
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.0200000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "description": "URL or domain to parse sitemap.xml from"
                  }
                },
                "required": [
                  "url"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Parse sitemap.xml from a domain",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "success",
                    "data"
                  ]
                }
              }
            }
          },
          "402": {
            "description": "Payment Required"
          }
        },
        "security": []
      }
    },
    "/api/feed": {
      "post": {
        "operationId": "feed",
        "summary": "Discover RSS/Atom feeds from a URL",
        "tags": [
          "Feed"
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.0200000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "description": "URL to discover RSS/Atom feeds from"
                  }
                },
                "required": [
                  "url"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Discover RSS/Atom feeds from a URL",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "success",
                    "data"
                  ]
                }
              }
            }
          },
          "402": {
            "description": "Payment Required"
          }
        },
        "security": []
      }
    },
    "/api/crawl": {
      "post": {
        "operationId": "crawl",
        "summary": "Crawl multiple pages from a domain",
        "tags": [
          "Crawl"
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.1000000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "description": "Seed URL to start crawling from"
                  },
                  "maxPages": {
                    "type": "integer",
                    "description": "Max pages to crawl (default 5)"
                  }
                },
                "required": [
                  "url"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Crawl multiple pages from a domain",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "success",
                    "data"
                  ]
                }
              }
            }
          },
          "402": {
            "description": "Payment Required"
          }
        },
        "security": []
      }
    },
    "/api/summarize": {
      "post": {
        "operationId": "summarize",
        "summary": "AI-summarize any URL content",
        "tags": [
          "Summarize"
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.0500000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "description": "URL to summarize"
                  },
                  "maxLength": {
                    "type": "integer",
                    "description": "Max summary length in words (default 200)"
                  }
                },
                "required": [
                  "url"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "AI-summarize any URL content",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "success",
                    "data"
                  ]
                }
              }
            }
          },
          "402": {
            "description": "Payment Required"
          }
        },
        "security": []
      }
    },
    "/api/compare": {
      "post": {
        "operationId": "compare",
        "summary": "Compare content of two URLs",
        "tags": [
          "Compare"
        ],
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.0500000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "urlA": {
                    "type": "string",
                    "description": "First URL to compare"
                  },
                  "urlB": {
                    "type": "string",
                    "description": "Second URL to compare"
                  }
                },
                "required": [
                  "urlA",
                  "urlB"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Compare content of two URLs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "success",
                    "data"
                  ]
                }
              }
            }
          },
          "402": {
            "description": "Payment Required"
          }
        },
        "security": []
      }
    }
  }
}