Map multiple URLs based on options
curl --request POST \
--url https://api.firecrawl.dev/v1/map \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"search": "<string>",
"ignoreSitemap": true,
"sitemapOnly": false,
"includeSubdomains": true,
"limit": 5000,
"timeout": 123,
"location": {
"country": "US",
"languages": [
"en-US"
]
}
}
'import requests
url = "https://api.firecrawl.dev/v1/map"
payload = {
"url": "<string>",
"search": "<string>",
"ignoreSitemap": True,
"sitemapOnly": False,
"includeSubdomains": True,
"limit": 5000,
"timeout": 123,
"location": {
"country": "US",
"languages": ["en-US"]
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
url: '<string>',
search: '<string>',
ignoreSitemap: true,
sitemapOnly: false,
includeSubdomains: true,
limit: 5000,
timeout: 123,
location: {country: 'US', languages: ['en-US']}
})
};
fetch('https://api.firecrawl.dev/v1/map', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.firecrawl.dev/v1/map",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => '<string>',
'search' => '<string>',
'ignoreSitemap' => true,
'sitemapOnly' => false,
'includeSubdomains' => true,
'limit' => 5000,
'timeout' => 123,
'location' => [
'country' => 'US',
'languages' => [
'en-US'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.firecrawl.dev/v1/map"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"search\": \"<string>\",\n \"ignoreSitemap\": true,\n \"sitemapOnly\": false,\n \"includeSubdomains\": true,\n \"limit\": 5000,\n \"timeout\": 123,\n \"location\": {\n \"country\": \"US\",\n \"languages\": [\n \"en-US\"\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.firecrawl.dev/v1/map")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"search\": \"<string>\",\n \"ignoreSitemap\": true,\n \"sitemapOnly\": false,\n \"includeSubdomains\": true,\n \"limit\": 5000,\n \"timeout\": 123,\n \"location\": {\n \"country\": \"US\",\n \"languages\": [\n \"en-US\"\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.firecrawl.dev/v1/map")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"search\": \"<string>\",\n \"ignoreSitemap\": true,\n \"sitemapOnly\": false,\n \"includeSubdomains\": true,\n \"limit\": 5000,\n \"timeout\": 123,\n \"location\": {\n \"country\": \"US\",\n \"languages\": [\n \"en-US\"\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"links": [
"<string>"
]
}{
"error": "Payment required to access this resource."
}{
"error": "Request rate limit exceeded. Please wait and try again later."
}{
"error": "An unexpected error occurred on the server."
}Map Endpoints
Map
POST
/
map
Map multiple URLs based on options
curl --request POST \
--url https://api.firecrawl.dev/v1/map \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"search": "<string>",
"ignoreSitemap": true,
"sitemapOnly": false,
"includeSubdomains": true,
"limit": 5000,
"timeout": 123,
"location": {
"country": "US",
"languages": [
"en-US"
]
}
}
'import requests
url = "https://api.firecrawl.dev/v1/map"
payload = {
"url": "<string>",
"search": "<string>",
"ignoreSitemap": True,
"sitemapOnly": False,
"includeSubdomains": True,
"limit": 5000,
"timeout": 123,
"location": {
"country": "US",
"languages": ["en-US"]
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
url: '<string>',
search: '<string>',
ignoreSitemap: true,
sitemapOnly: false,
includeSubdomains: true,
limit: 5000,
timeout: 123,
location: {country: 'US', languages: ['en-US']}
})
};
fetch('https://api.firecrawl.dev/v1/map', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.firecrawl.dev/v1/map",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => '<string>',
'search' => '<string>',
'ignoreSitemap' => true,
'sitemapOnly' => false,
'includeSubdomains' => true,
'limit' => 5000,
'timeout' => 123,
'location' => [
'country' => 'US',
'languages' => [
'en-US'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.firecrawl.dev/v1/map"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"search\": \"<string>\",\n \"ignoreSitemap\": true,\n \"sitemapOnly\": false,\n \"includeSubdomains\": true,\n \"limit\": 5000,\n \"timeout\": 123,\n \"location\": {\n \"country\": \"US\",\n \"languages\": [\n \"en-US\"\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.firecrawl.dev/v1/map")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"search\": \"<string>\",\n \"ignoreSitemap\": true,\n \"sitemapOnly\": false,\n \"includeSubdomains\": true,\n \"limit\": 5000,\n \"timeout\": 123,\n \"location\": {\n \"country\": \"US\",\n \"languages\": [\n \"en-US\"\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.firecrawl.dev/v1/map")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"search\": \"<string>\",\n \"ignoreSitemap\": true,\n \"sitemapOnly\": false,\n \"includeSubdomains\": true,\n \"limit\": 5000,\n \"timeout\": 123,\n \"location\": {\n \"country\": \"US\",\n \"languages\": [\n \"en-US\"\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"links": [
"<string>"
]
}{
"error": "Payment required to access this resource."
}{
"error": "Request rate limit exceeded. Please wait and try again later."
}{
"error": "An unexpected error occurred on the server."
}Note: A new v2 version of this API is now available with improved features and performance.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
The base URL to start crawling from
Search query to use for mapping. During the Alpha phase, the 'smart' part of the search functionality is limited to 500 search results. However, if map finds more results, there is no limit applied.
Ignore the website sitemap when crawling.
Only return links found in the website sitemap
Include subdomains of the website
Maximum number of links to return
Required range:
x <= 30000Timeout in milliseconds. There is no timeout by default.
Location settings for the request. When specified, this will use an appropriate proxy if available and emulate the corresponding language and timezone settings. Defaults to 'US' if not specified.
Show child attributes
Show child attributes
⌘I

