curl --request POST \
--url https://api.example.com/v1/workspaces/{workspaceId}/pages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"focusKeyword": "<string>"
}
'import requests
url = "https://api.example.com/v1/workspaces/{workspaceId}/pages"
payload = {
"url": "<string>",
"focusKeyword": "<string>"
}
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>', focusKeyword: '<string>'})
};
fetch('https://api.example.com/v1/workspaces/{workspaceId}/pages', 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.example.com/v1/workspaces/{workspaceId}/pages",
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>',
'focusKeyword' => '<string>'
]),
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.example.com/v1/workspaces/{workspaceId}/pages"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"focusKeyword\": \"<string>\"\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.example.com/v1/workspaces/{workspaceId}/pages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"focusKeyword\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/workspaces/{workspaceId}/pages")
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 \"focusKeyword\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"contentRetrievedAt": "<string>",
"contentScore": 123,
"extractedContentHtml": "<string>",
"focusKeyword": {
"id": "<string>",
"keyword": "<string>",
"position": 123,
"searchVolume": 123
},
"id": "<string>",
"importedAt": "<string>",
"lastPublishedAt": "<string>",
"lastStatusCode": 123,
"metaDescription": "<string>",
"monthlyClicks": 123,
"monthlyConversions": 123,
"monthlyRevenue": 123,
"monthlyTransactions": 123,
"title": "<string>",
"url": "<string>",
"urlCategory": "misc",
"wordsCount": 123,
"workspace": {
"id": "<string>",
"name": "<string>",
"websiteUrl": "<string>"
}
}Import a page
Imports an existing URL into the workspace (crawls it to extract title, meta description, etc.). Use this for pages you already have online and want to track. Optionally sets a URL category and focus keyword. To create a new editorial draft that does not yet have a URL, use POST /v1/workspaces/:workspaceId/contents instead.
curl --request POST \
--url https://api.example.com/v1/workspaces/{workspaceId}/pages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"focusKeyword": "<string>"
}
'import requests
url = "https://api.example.com/v1/workspaces/{workspaceId}/pages"
payload = {
"url": "<string>",
"focusKeyword": "<string>"
}
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>', focusKeyword: '<string>'})
};
fetch('https://api.example.com/v1/workspaces/{workspaceId}/pages', 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.example.com/v1/workspaces/{workspaceId}/pages",
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>',
'focusKeyword' => '<string>'
]),
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.example.com/v1/workspaces/{workspaceId}/pages"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"focusKeyword\": \"<string>\"\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.example.com/v1/workspaces/{workspaceId}/pages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"focusKeyword\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/workspaces/{workspaceId}/pages")
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 \"focusKeyword\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"contentRetrievedAt": "<string>",
"contentScore": 123,
"extractedContentHtml": "<string>",
"focusKeyword": {
"id": "<string>",
"keyword": "<string>",
"position": 123,
"searchVolume": 123
},
"id": "<string>",
"importedAt": "<string>",
"lastPublishedAt": "<string>",
"lastStatusCode": 123,
"metaDescription": "<string>",
"monthlyClicks": 123,
"monthlyConversions": 123,
"monthlyRevenue": 123,
"monthlyTransactions": 123,
"title": "<string>",
"url": "<string>",
"urlCategory": "misc",
"wordsCount": 123,
"workspace": {
"id": "<string>",
"name": "<string>",
"websiteUrl": "<string>"
}
}Authorizations
API key starting with sk_. Generate one in Settings > API Keys.
Path Parameters
Workspace ID.
Body
Full URL of the page to import.
Optional focus keyword to associate with the page.
Optional URL classification.
misc, forum, article, news, article_category, ecommerce_products_listing, ecommerce_product_page, landing_page, tool, homepage, local, video Response
Default Response
ISO 8601 date of the last successful content extraction.
This score out of 100 measures the SEO quality of your online content.
Cleaned HTML of the main content extracted from the crawled page.
Focus keyword linked to this page.
Show child attributes
Show child attributes
Unique identifier of the page.
Import date of the page (ISO 8601).
Date of the last publication (ISO 8601).
HTTP status code of the latest crawl.
Meta description.
Monthly Clicks generated by your Pages in the last 30 days for all Countries (Search Console).
Monthly conversions generated by your pages over the last 30 days.
Monthly revenue generated by your pages over the last 30 days.
Monthly transactions generated by your pages in the last 30 days for all countries.
HTML title.
Full URL.
URL classification computed by the backend (LLM-based).
misc, forum, article, news, article_category, ecommerce_products_listing, ecommerce_product_page, landing_page, tool, homepage, local, video Word count.
Workspace this page belongs to.
Show child attributes
Show child attributes
Was this page helpful?