API Documentation

Welcome to the ShuttleSEO API! This documentation provides detailed information about available endpoints.

Pricing

Integration Support Included

All our paid plans come with dedicated support to help you seamlessly integrate the ShuttleSEO API into your existing solutions and workflows. We're here to ensure you get the most value from our data.

Starter

Perfect for small projects & testing.

$50/ month

500 requests / month

0.75Mkeywords / month

$0.10 / request

Most Popular

Pro

Ideal for growing applications.

$150/ month

5,000 requests / month

4.5Mkeywords / month

$0.05 / request

Scale

For established apps with high volume.

$400/ month

10,000 requests / month

15Mkeywords / month

$0.04 / request

Enterprise

Tailored solutions for unique needs.

Custom

Custom requests / month

Authentication

All API requests require an API key for authentication. Include your API key as a query parameter named apiKey in each request.

Example: ?apiKey=YOUR_API_KEY

Need an API key? Contact us now to get yours today!

Code Samples

Using native https module. node-fetch (npm i node-fetch) is recommended (see commented code).

1const https = require('https'); // Or use 'axios' or 'node-fetch'
2
3const apiKey = "YOUR_API_KEY";
4const searchTerm = "coffee";
5const baseUrl = "https://shuttleseo.com/api/keywords/search";
6
7const url = `${baseUrl}?searchTerm=${encodeURIComponent(searchTerm)}&apiKey=${encodeURIComponent(apiKey)}`;
8
9https.get(url, (res) => {
10  let data = '';
11  res.on('data', (chunk) => { data += chunk; });
12  res.on('end', () => {
13    if (res.statusCode >= 200 && res.statusCode < 300) {
14      try {
15        console.log(JSON.stringify(JSON.parse(data), null, 2));
16      } catch (e) { console.error("JSON parsing error:", e.message); }
17    } else {
18      console.error(`Request Failed. Status Code: ${res.statusCode}`);
19      console.error("Response:", data);
20    }
21  });
22}).on("error", (err) => {
23  console.error("API call error:", err.message);
24});
25
26// --- Using node-fetch (recommended) ---
27/*
28import fetch from 'node-fetch'; // npm install node-fetch
29
30async function fetchKeywords() {
31    const apiKey = "YOUR_API_KEY";
32    const searchTerm = "coffee";
33    const baseUrl = "https://shuttleseo.com/api/keywords/search";
34    const url = `${baseUrl}?searchTerm=${encodeURIComponent(searchTerm)}&apiKey=${encodeURIComponent(apiKey)}`;
35
36    try {
37        const response = await fetch(url);
38        if (!response.ok) {
39            const errorText = await response.text();
40            throw new Error(`HTTP error! Status: ${response.status} - ${errorText}`);
41        }
42        const data = await response.json();
43        console.log(JSON.stringify(data, null, 2));
44    } catch (error) {
45        console.error('Error fetching keyword data:', error);
46    }
47}
48fetchKeywords();
49*/