const API_KEY = process.env.KWI_API_KEY;
const BASE_URL = "https://api.keywordinsights.ai";
const HEADERS = {
"X-API-Key": API_KEY,
"Content-Type": "application/json"
};
async function createBatch(keywords, domain, language = "en", location = "United States") {
const response = await fetch(`${BASE_URL}/api/advanced-ranking/batch/order/`, {
method: "POST",
headers: HEADERS,
body: JSON.stringify({
keywords,
domain,
language,
location,
include_word_count: true,
}),
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return await response.json();
}
async function waitForBatch(order_id) {
while (true) {
const url = new URL(`${BASE_URL}/api/advanced-ranking/batch/order/`);
url.searchParams.append("order_id", order_id);
const response = await fetch(url, {
headers: HEADERS,
});
const json = await response.json();
const data = json.result.payload;
if (data.status === "done") {
return data.results;
}
console.log("Processing...");
await new Promise((r) => setTimeout(r, 15000));
}
}
// --- Run ---
async function run() {
const keywords = [
"project management software",
"task management tool",
"team collaboration software",
];
const result = await createBatch(keywords, "asana.com");
const order_id = result.order_id;
console.log(`Batch created: ${order_id} (cost: ${result.cost} credits)`);
const results = await waitForBatch(order_id);
for (const item of results) {
console.log(`\n'${item.keyword}': ${item.n_domain_rankings} URLs in top 100`);
for (const r of item.domain_rankings.slice(0, 3)) {
console.log(` #${r.rank} — ${r.url}`);
}
}
}
run();