Дані мають бути надіслані у вигляді масиву JSON. Кожен елемент повинен містити наступні поля.
Ліміт
Масив JSON може містити 100 елементів, тому ви можете створити 100 скребків результатів пошуку за один виклик.
post
https://api.semscraper.com/v1/serp
https://api.semscraper.com/v1/serp
Дозволи : Bearer {api_key}
Параметри
search_engine
Потрібно
string
Вибір пошукової системи :
Пошук Google (значення: google_search)
keyword
Потрібно
string
Ключові слова для пошуку в пошуковій системі
device
Потрібно
string
Вибір підкладки :
Комп'ютер (значення: настільний)
Мобільний (значення: мобільний)
depth
Потрібно
integer
Глибина сторінки, ми отримуємо результати пошукової видачі Google з пагінацією. Цей параметр повинен бути в межах від 1 (приблизно 10 результатів) до 10 (приблизно 100 результатів).
location
Потрібно
string
Код місцезнаходження пошукової системи
language
Потрібно
string
Мова пошукової системи
geolocation
string
Дозволяє визначити геолокацію пошукової видачі Google. Наприклад, ви можете вказати місто, область або країну, розділені комою.
priority
integer
Використовується для визначення пріоритету ваших запитів, які обробляються в порядку зменшення пріоритету. Значення від 1 (низький) до 10 (високий).
callback_url
string
Дозволяє вказати URL-адресу, на яку ми надішлемо вам результати за ключовим словом після його обробки.
Дані мають бути надіслані у вигляді масиву JSON. Кожен елемент повинен містити наступні поля.
Ліміт
Масив JSON може містити 100 елементів, тому ви можете створити 100 скребків результатів пошуку за один виклик.
post
https://api.semscraper.com/v1/serp
https://api.semscraper.com/v1/serp
Дозволи : Bearer {api_key}
Параметри
search_engine
Потрібно
string
Вибір пошукової системи :
Google Maps (значення: google_maps)
keyword
Потрібно
string
Ключові слова для пошуку в пошуковій системі
depth
Потрібно
integer
Глибина сторінки, ми отримуємо результати пошукової видачі Google з пагінацією. Цей параметр повинен бути в межах від 1 (приблизно 10 результатів) до 10 (приблизно 100 результатів).
location
Потрібно
string
Код місцезнаходження пошукової системи
language
Потрібно
string
Мова пошукової системи
geolocation
string
Дозволяє визначити геолокацію пошукової видачі Google. Наприклад, ви можете вказати місто, область або країну, розділені комою.
priority
integer
Використовується для визначення пріоритету ваших запитів, які обробляються в порядку зменшення пріоритету. Значення від 1 (низький) до 10 (високий).
callback_url
string
Дозволяє вказати URL-адресу, на яку ми надішлемо вам результати за ключовим словом після його обробки.
Список ідентифікаторів (ID) завершених результатів пошуку, які ви ще не отримали.
Цей метод дозволяє отримати ідентифікатори всіх результатів пошуку, які вже були оброблені, але ще не знайдені. Потім ви можете викликати метод пошуку за цими ідентифікаторами.
Відновлення пошукової видачі через URL-адресу зворотного дзвінка
Ви можете отримати результат пошукової видачі безпосередньо за URL-адресою, яку ви вказуєте при створенні запиту. Все, що вам потрібно зробити, - це отримати HMAC-ключ, пов'язаний з ключем API, який ви використовуєте.
Код
PHP
Python
Javascript
Ruby
Java
C#
GO
// 1) Read the raw body (JSON)
$raw = file_get_contents('php://input');
// Middleware to parse JSON and keep raw body for HMAC verification
app.use(express.json({
verify: (req, res, buf) => {
req.rawBody = buf.toString(); // Save raw body for signature check
}
}));
app.post("/callback", (req, res) => {
// 1) Read the raw body (JSON)
const raw = req.rawBody;
// Use timing-safe comparison to avoid timing attacks
if (!crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature))) {
return res.status(401).type("text").send("Invalid signature");
}
// 4) Decode the JSON (Express already did it in req.body)
let data;
try {
data = req.body;
} catch (err) {
return res.status(400).type("text").send("Invalid JSON");
}
// 5) Process the data
// data contains what the client sent in the payload
// For example: data.id, data.results, etc.
// 6) Respond in JSON (optional, we log these responses for tracking purposes)
res.status(200).json({
status: "ok",
received_at: new Date().toISOString(),
echo: data.id || null
});
});
// 4) Decode the JSON
Map data;
try {
data = new com.fasterxml.jackson.databind.ObjectMapper().readValue(raw, Map.class);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST)
.contentType(MediaType.TEXT_PLAIN)
.body("Invalid JSON");
}
// 5) Process the data
// data contains what the client sent in the payload
// For example: data.get("id"), data.get("results"), etc.
// 6) Respond in JSON (optional, we log these responses for tracking purposes)
Map response = new HashMap<>();
response.put("status", "ok");
response.put("received_at", Instant.now().toString());
response.put("echo", data.get("id"));
// Helper method: secure string comparison (to avoid timing attacks)
private boolean secureCompare(String a, String b) {
if (a == null || b == null || a.length() != b.length()) {
return false;
}
int result = 0;
for (int i = 0; i < a.length(); i++) {
result |= a.charAt(i) ^ b.charAt(i);
}
return result == 0;
}
// Helper method: convert bytes to hex string
private String bytesToHex(byte[] bytes) {
StringBuilder hexString = new StringBuilder(2 bytes.length);
for (byte b : bytes) {
String hex = Integer.toHexString(0xff & b);
if (hex.length() == 1) hexString.append('0');
hexString.append(hex);
}
return hexString.toString();
}
}
PHP
Python
Javascript
Ruby
Java
C#
GO
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
const string SHARED_SECRET = "HMAC_KEY";
app.MapPost("/callback", async (HttpRequest request, HttpResponse response) =>
{
// 1) Read the raw body (JSON)
using var reader = new StreamReader(request.Body);
var raw = await reader.ReadToEndAsync();
// 2) Retrieve the headers
var signature = request.Headers["X-Signature"].FirstOrDefault() ?? "";
// 3) (Optional) Verify the HMAC signature
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(SHARED_SECRET));
var hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(raw));
var expected = Convert.ToHexString(hash).ToLowerInvariant();
// 5) Process the data
// data contains what the client sent in the payload
// For example: data["id"], data["results"], etc.
// 6) Respond in JSON (optional, we log these responses for tracking purposes)
var jsonResponse = new
{
status = "ok",
received_at = DateTime.UtcNow.ToString("o"), // ISO 8601
echo = data != null && data.ContainsKey("id") ? data["id"] : null
};
Поточний стан обробки результатів пошукової видачі
Переглядайте кількість результатів відповідно до їхнього статусу:
Виконано та отримано результати користувачем (status=done, fetched=true)
Завершено і результати не отримано користувачем (status=done, fetched=false)
У процесі (статус=обробка)
Очікує (статус=очікує)