API: endpoints and practical examples
Choose the right endpoint for sitemaps, Google results, Search Console or performance. Copy requests and build a repeatable workflow.
On this page
1. Choose between the API and MCP
An endpoint is an address that performs a specific operation: extracting sitemap URLs, reading Search Console performance or starting a crawl. Send an HTTP request and use the response in your script or automation tool.
| You want to… | Start with |
|---|---|
| Collect the same data weekly using n8n, Make or a script | The HTTP API, with explicit parameters. |
| Explore a project conversationally, prepare a report or manage cards with an assistant | Cuik MCP. |
| Try parameters and get code you can adapt | Cuik’s APIs menu and request generators. |
This guide covers the API tools, rather than every internal SaaS route or MCP tool. The SaaS Google Analytics view is also separate from the Search Console endpoint below.
2. Prepare the connection
The base URL is https://api.cuik.io. Send your Cuik key in the Authorization header, without Bearer, and a JSON body for POST requests.
Authentication and first request explains where to find the key and how to make a first read-only request without starting an audit.
For this page’s Bash examples, enter the key once without displaying it:
read -r -s -p "Cuik API key: " CUIK_API_KEY
export CUIK_API_KEYExtraction and analysis calls use your real account and may consume credits. Check the cost and options in the relevant API screen before running a loop. Copying an example does not execute it.
Google search: add "pages": 3 to request three pages of up to ten results, for 3 credits. Viewing Search Console in the Cuik interface uses no credits; extraction through /v1/search_console costs 1 credit per request.
3. Find the right endpoint
| Need | Method and path | Initial parameters | Example use |
|---|---|---|---|
| Inventory declared URLs | POST /v1/sitemap/urls |
site |
Prepare a sample of pages to audit. |
| Extract a page | POST /v1/scrap |
url |
Retrieve page content for analysis. |
| Query Google | POST /search |
q, gl, hl, num, page |
Observe search results in a market. |
| Measure web performance | POST /v1/pagespeed |
url, strategy |
Compare mobile and desktop on an important page. |
| Produce a screenshot | POST /v1/screenshot |
url, main_page |
Illustrate an audit with the page concerned. |
| Read Search Console | POST /v1/search_console |
property_url, startDate, endDate, dimensions |
Feed an SEO dashboard. |
| Explore ranked keywords | POST /v1/ranked-keywords |
url, location_code, language_code, limit, offset |
Find a domain’s queries in the available dataset. |
| Find keyword ideas | POST /v1/keywords-ideas |
keyword_texts or page_urls, location_ids, language_id |
Prepare editorial research. |
| Examine backlinks | POST /v1/backlinks |
url, limit, offset |
Explore links and referring domains. |
| Start a technical audit | POST /v1/crawl |
url, max_urls, engine |
Audit a bounded scope. |
| List existing audits | GET /v1/crawls |
limit, offset in the URL |
Retrieve a crawl ID. |
| Monitor an audit | GET /v1/crawl/{crawl_id} |
ID in the path | Wait for completion and read available information. |
| Read crawl links | GET /v1/crawl/{crawl_id}/data/links |
source or destination, limit, cursor |
Retrieve a page’s incoming or outgoing links. |
| Export every link | GET /v1/crawl/{crawl_id}/export/links |
internal, type |
Download the complete CSV.gz for your own tool. |
Filters, defaults, pagination and a PHP example: read and export crawl links.
/search has no /v1 prefix. Do not add one. Geographic parameters are not interchangeable either: for example, use gl: "fr" for search and location_code: 2250 for ranked keywords in France. Use each tool’s generator to select appropriate values.
Interactive screens: sitemap, page extraction, search, PageSpeed, screenshots, Search Console, keywords, backlinks and crawl.
4. Three first requests
Extract a website’s URLs
Replace https://example.com with the website to examine.
curl --fail-with-body --silent --show-error \
--max-time 120 \
'https://api.cuik.io/v1/sitemap/urls' \
-H "Authorization: $CUIK_API_KEY" \
-H 'Content-Type: application/json' \
--data '{"site":"https://example.com"}'The response contains urls, count, domain, status and optionally error_message. Check status as well as the HTTP status: a successfully received response can indicate that no usable sitemap was found.
A sitemap lists URLs declared by the website. It does not prove that Google indexes them, nor guarantee that every existing page is included.
Observe a Google search
curl --fail-with-body --silent --show-error \
--max-time 120 \
'https://api.cuik.io/search' \
-H "Authorization: $CUIK_API_KEY" \
-H 'Content-Type: application/json' \
--data '{"q":"logiciel reporting SEO","gl":"fr","hl":"fr","num":10,"page":1}'This requests the first page of results in French for France. Response sections vary with the search type and available results; organic results are generally found in organic.
Save the query, country, language and collection date alongside the response when comparing observations. A single request does not configure recurring rank tracking: your script schedules and stores subsequent observations.
Read Search Console performance
The property must be connected to your Cuik account. For this production endpoint, use https://example.com for a sc-domain:example.com domain property, or the URL of a URL-prefix property. The sc-domain: format used by other Cuik tools is not accepted by every version of this endpoint.
curl --fail-with-body --silent --show-error \
--max-time 120 \
'https://api.cuik.io/v1/search_console' \
-H "Authorization: $CUIK_API_KEY" \
-H 'Content-Type: application/json' \
--data '{"property_url":"https://example.com","startDate":"2026-08-01","endDate":"2026-08-31","dimensions":["page"],"searchType":"web","rowLimit":1000}'Change the dates to an available period. This example groups performance by page. With dimensions: ["query"], you analyse queries; with ["date"], daily changes. Breakdowns do not necessarily return the same coverage: do not assume query rows sum exactly to a property total.
rowLimit limits the batch size. The endpoint also accepts startRow for subsequent batches; the first batch does not prove that you retrieved every available row. This response is not an exhaustive inventory of indexed pages.
5. Automate a small performance audit
This Python 3 script checks at most two URLs, sequentially, on mobile. Replace the URLs, install requests (python -m pip install requests) and use the CUIK_API_KEY environment variable prepared above.
import json
import os
from datetime import datetime, timezone
from pathlib import Path
import requests
urls = ["https://example.com/", "https://example.com/services/"]
output = Path("cuik-pagespeed")
output.mkdir(exist_ok=True)
stamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ")
with requests.Session() as client:
client.headers.update({"Authorization": os.environ["CUIK_API_KEY"]})
for index, url in enumerate(urls[:2], start=1):
response = client.post(
"https://api.cuik.io/v1/pagespeed",
json={"url": url, "strategy": "mobile"},
timeout=120,
)
response.raise_for_status()
result = {"url": url, "strategy": "mobile", "data": response.json()}
target = output / f"{stamp}-{index}.json"
target.write_text(json.dumps(result, ensure_ascii=False, indent=2), encoding="utf-8")
print(f"Result saved: {target}")Each analysis is a separate request. For desktop, send strategy: "desktop" in another call. A lab score can vary between runs; retain the measurement conditions alongside the result.
The script stops on HTTP errors. It does not automatically repeat an analysis that might already have consumed credits.
6. Build a practical workflow
| Use case | Possible sequence | What your automation stores |
|---|---|---|
| Prepare a redesign | Sitemap → choose strategic URLs → PageSpeed or bounded crawl | URLs, dates, settings and baseline results. |
| Monitor SEO work | Weekly Search Console extraction → storage → comparison | The same property, dimensions and comparable periods. |
| Research competitors | Google search → ranked keywords → targeted backlinks | Market, queries and observations, without assuming exhaustive coverage. |
In n8n or Make, start with an HTTP module: method and URL from the table, key in secure credentials, JSON body and response storage. Your workflow handles recurring triggers and history.
A crawl starts asynchronously: keep the crawl_id and poll its status instead of launching another audit. Start and monitor a crawl explains the sequence and responses.
7. Understand errors and limits
- 401: check the key and header, especially the absence of
Bearerwith ansk_key. - 403: read the message: insufficient permissions or unavailable credits, depending on the operation.
- 404: check the path and requested identifier.
- 422: correct the named fields, types or formats in the response.
- 429: respect the indicated retry delay, if provided.
- Timeout / server error: a missing response does not prove the operation never started. Check available status before repeating a paid action.
When requesting help, retain the endpoint, time, relevant parameters and error message, without sharing the API key. Data collection, credit and source-access limits still apply to scripted calls.