{ "openapi": "3.0.0", "info": { "title": "Firecrawl API", "version": "1.0.0", "description": "API for interacting with Firecrawl services to perform web scraping and crawling tasks.", "contact": { "name": "Firecrawl Support", "url": "https://firecrawl.dev/support", "email": "support@firecrawl.dev" } }, "servers": [ { "url": "https://api.firecrawl.dev/v1" } ], "paths": { "/scrape": { "post": { "summary": "Scrape a single URL and optionally extract information using an LLM", "operationId": "scrapeAndExtractFromUrl", "tags": ["Scraping"], "security": [ { "bearerAuth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "allOf": [ { "type": "object", "properties": { "url": { "type": "string", "format": "uri", "description": "The URL to scrape" } }, "required": ["url"] }, { "$ref": "#/components/schemas/ScrapeOptions" } ] } } } }, "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScrapeResponse" } } } }, "402": { "description": "Payment required", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Payment required to access this resource." } } } } } }, "429": { "description": "Too many requests", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Request rate limit exceeded. Please wait and try again later." } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "An unexpected error occurred on the server." } } } } } } } } }, "/batch/scrape": { "post": { "summary": "Scrape multiple URLs and optionally extract information using an LLM", "operationId": "scrapeAndExtractFromUrls", "tags": ["Scraping"], "security": [ { "bearerAuth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "allOf": [ { "type": "object", "properties": { "urls": { "type": "array", "items": { "type": "string", "format": "uri", "description": "The URL to scrape" } }, "webhook": { "type": "object", "description": "A webhook specification object.", "properties": { "url": { "type": "string", "description": "The URL to send the webhook to. This will trigger for batch scrape started (batch_scrape.started), every page scraped (batch_scrape.page) and when the batch scrape is completed (batch_scrape.completed or batch_scrape.failed). The response will be the same as the `/scrape` endpoint." }, "headers": { "type": "object", "description": "Headers to send to the webhook URL.", "additionalProperties": { "type": "string" } }, "metadata": { "type": "object", "description": "Custom metadata that will be included in all webhook payloads for this crawl", "additionalProperties": true }, "events": { "type": "array", "description": "Type of events that should be sent to the webhook URL. (default: all)", "items": { "type": "string", "enum": ["completed", "page", "failed", "started"] } } }, "required": ["url"] }, "ignoreInvalidURLs": { "type": "boolean", "default": false, "description": "If invalid URLs are specified in the urls array, they will be ignored. Instead of them failing the entire request, a batch scrape using the remaining valid URLs will be created, and the invalid URLs will be returned in the invalidURLs field of the response." } }, "required": ["urls"] }, { "$ref": "#/components/schemas/ScrapeOptions" } ] } } } }, "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BatchScrapeResponseObj" } } } }, "402": { "description": "Payment required", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Payment required to access this resource." } } } } } }, "429": { "description": "Too many requests", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Request rate limit exceeded. Please wait and try again later." } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "An unexpected error occurred on the server." } } } } } } } } }, "/batch/scrape/{id}": { "parameters": [ { "name": "id", "in": "path", "description": "The ID of the batch scrape job", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "get": { "summary": "Get the status of a batch scrape job", "operationId": "getBatchScrapeStatus", "tags": ["Scraping"], "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" } } } }, "402": { "description": "Payment required", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Payment required to access this resource." } } } } } }, "429": { "description": "Too many requests", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Request rate limit exceeded. Please wait and try again later." } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "An unexpected error occurred on the server." } } } } } } } }, "delete": { "summary": "Cancel a batch scrape job", "operationId": "cancelBatchScrape", "tags": ["Scraping"], "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "Successful cancellation", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "Batch scrape job successfully cancelled." } } } } } }, "404": { "description": "Batch scrape job not found", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Batch scrape job not found." } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "An unexpected error occurred on the server." } } } } } } } } }, "/batch/scrape/{id}/errors": { "parameters": [ { "name": "id", "in": "path", "description": "The ID of the batch scrape job", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "get": { "summary": "Get the errors of a batch scrape job", "operationId": "getBatchScrapeErrors", "tags": ["Scraping"], "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CrawlErrorsResponseObj" } } } }, "402": { "description": "Payment required", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Payment required to access this resource." } } } } } }, "429": { "description": "Too many requests", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Request rate limit exceeded. Please wait and try again later." } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "An unexpected error occurred on the server." } } } } } } } } }, "/crawl/{id}": { "parameters": [ { "name": "id", "in": "path", "description": "The ID of the crawl job", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "get": { "summary": "Get the status of a crawl job", "operationId": "getCrawlStatus", "tags": ["Crawling"],Lines 1–500 of 2885. Load more
{ "openapi": "3.0.0", "info": { "title": "Firecrawl API", "version": "1.0.0", "description": "API for interacting with Firecrawl services to perform web scraping and crawling tasks.", "contact": { "name": "Firecrawl Support", "url": "https://firecrawl.dev/support", "email": "support@firecrawl.dev" } }, "servers": [ { "url": "https://api.firecrawl.dev/v1" } ], "paths": { "/scrape": { "post": { "summary": "Scrape a single URL and optionally extract information using an LLM", "operationId": "scrapeAndExtractFromUrl", "tags": ["Scraping"], "security": [ { "bearerAuth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "allOf": [ { "type": "object", "properties": { "url": { "type": "string", "format": "uri", "description": "The URL to scrape" } }, "required": ["url"] }, { "$ref": "#/components/schemas/ScrapeOptions" } ] } } } }, "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScrapeResponse" } } } }, "402": { "description": "Payment required", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Payment required to access this resource." } } } } } }, "429": { "description": "Too many requests", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Request rate limit exceeded. Please wait and try again later." } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "An unexpected error occurred on the server." } } } } } } } } }, "/batch/scrape": { "post": { "summary": "Scrape multiple URLs and optionally extract information using an LLM", "operationId": "scrapeAndExtractFromUrls", "tags": ["Scraping"], "security": [ { "bearerAuth": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "allOf": [ { "type": "object", "properties": { "urls": { "type": "array", "items": { "type": "string", "format": "uri", "description": "The URL to scrape" } }, "webhook": { "type": "object", "description": "A webhook specification object.", "properties": { "url": { "type": "string", "description": "The URL to send the webhook to. This will trigger for batch scrape started (batch_scrape.started), every page scraped (batch_scrape.page) and when the batch scrape is completed (batch_scrape.completed or batch_scrape.failed). The response will be the same as the `/scrape` endpoint." }, "headers": { "type": "object", "description": "Headers to send to the webhook URL.", "additionalProperties": { "type": "string" } }, "metadata": { "type": "object", "description": "Custom metadata that will be included in all webhook payloads for this crawl", "additionalProperties": true }, "events": { "type": "array", "description": "Type of events that should be sent to the webhook URL. (default: all)", "items": { "type": "string", "enum": ["completed", "page", "failed", "started"] } } }, "required": ["url"] }, "ignoreInvalidURLs": { "type": "boolean", "default": false, "description": "If invalid URLs are specified in the urls array, they will be ignored. Instead of them failing the entire request, a batch scrape using the remaining valid URLs will be created, and the invalid URLs will be returned in the invalidURLs field of the response." } }, "required": ["urls"] }, { "$ref": "#/components/schemas/ScrapeOptions" } ] } } } }, "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BatchScrapeResponseObj" } } } }, "402": { "description": "Payment required", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Payment required to access this resource." } } } } } }, "429": { "description": "Too many requests", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Request rate limit exceeded. Please wait and try again later." } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "An unexpected error occurred on the server." } } } } } } } } }, "/batch/scrape/{id}": { "parameters": [ { "name": "id", "in": "path", "description": "The ID of the batch scrape job", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "get": { "summary": "Get the status of a batch scrape job", "operationId": "getBatchScrapeStatus", "tags": ["Scraping"], "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BatchScrapeStatusResponseObj" } } } }, "402": { "description": "Payment required", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Payment required to access this resource." } } } } } }, "429": { "description": "Too many requests", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Request rate limit exceeded. Please wait and try again later." } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "An unexpected error occurred on the server." } } } } } } } }, "delete": { "summary": "Cancel a batch scrape job", "operationId": "cancelBatchScrape", "tags": ["Scraping"], "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "Successful cancellation", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "Batch scrape job successfully cancelled." } } } } } }, "404": { "description": "Batch scrape job not found", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Batch scrape job not found." } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "An unexpected error occurred on the server." } } } } } } } } }, "/batch/scrape/{id}/errors": { "parameters": [ { "name": "id", "in": "path", "description": "The ID of the batch scrape job", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "get": { "summary": "Get the errors of a batch scrape job", "operationId": "getBatchScrapeErrors", "tags": ["Scraping"], "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CrawlErrorsResponseObj" } } } }, "402": { "description": "Payment required", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Payment required to access this resource." } } } } } }, "429": { "description": "Too many requests", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Request rate limit exceeded. Please wait and try again later." } } } } } }, "500": { "description": "Server error", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "An unexpected error occurred on the server." } } } } } } } } }, "/crawl/{id}": { "parameters": [ { "name": "id", "in": "path", "description": "The ID of the crawl job", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "get": { "summary": "Get the status of a crawl job", "operationId": "getCrawlStatus", "tags": ["Crawling"],