Docs
Войти

Endpoint

GEThttps://api.crawlbase.com/storage
# Two operations: store (write) and retrieve (read).
# Storage is implicit - set store=true on a Crawling API call to write.
# Use this endpoint to read.

Сохранение страниц

Чтобы сохранить страницу, не нужно вызывать этот endpoint. Просто добавьте store=true к любому вызову Crawling API. Страница сохраняется автоматически, а в ответе вы получаете rid.

curl 'https://api.crawlbase.com/?token=YOUR_TOKEN' \
  --data-urlencode 'url=https://example.com' \
  --data-urlencode 'store=true' -G

# Response includes rid: a1B2c3D4e5F6

Извлечение страниц

По RID

curl 'https://api.crawlbase.com/storage?token=YOUR_TOKEN&rid=a1B2c3D4e5F6'
from crawlbase import StorageAPI

api = StorageAPI({'token': 'YOUR_TOKEN'})
res = api.get(rid='a1B2c3D4e5F6')
print(res['body'])
const { StorageAPI } = require('crawlbase');
const api = new StorageAPI({ token: 'YOUR_TOKEN' });

const res = await api.get({ rid: 'a1B2c3D4e5F6' });
console.log(res.body);

По URL

Найдите сохранённую страницу по её исходному URL. Возвращается самая свежая сохранённая версия.

curl 'https://api.crawlbase.com/storage?token=YOUR_TOKEN&url=https%3A%2F%2Fexample.com'

Параметры

token
stringобязательный
Ваш Crawlbase token.
rid
stringодно из
Идентификатор запроса, возвращённый при сохранении страницы.
url
stringодно из
Исходный URL. Возвращает самую свежую сохранённую версию. Передавайте в URL-кодированном виде.
format
html | jsonhtml
Формат ответа. json оборачивает тело и метаданные.

Массовое извлечение

Извлекайте до 100 сохранённых страниц за один round-trip по RID. Отправьте POST с JSON-телом со списком и (опционально) попросите сервер удалить каждую запись по мере её возврата - полезно для пайплайнов «осушения очереди», которым не нужно держать хранилище тёплым.

POSThttps://api.crawlbase.com/storage/bulk
curl -X POST 'https://api.crawlbase.com/storage/bulk?token=YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{ "rids": ["RID1","RID2","RID3"], "auto_delete": true }'
rids
string[]обязательный
Массив RID для извлечения. Максимум 100 на запрос - всё сверх 100 молча отбрасывается.
auto_delete
booleanfalse
Если true , каждая успешно возвращённая запись удаляется из хранилища в том же вызове. Используйте это, когда осушаете очередь одноразовых результатов и не нуждаетесь в их хранении.

Ответ - это JSON-массив, по одному объекту на возвращённый RID. Поле body закодировано в base64 и сжато gzip - декодируйте base64, затем распакуйте gzip, чтобы получить исходную страницу.

[
  {
    "stored_at": "2021-03-01T14:22:58+02:00",
    "original_status": 200,
    "pc_status": 200,
    "rid": "RID1",
    "url": "https://example.com/a",
    "body": "H4sIAAAA…"  // base64(gzip(html))
  },
  {
    "stored_at": "2021-03-01T14:30:51+02:00",
    "original_status": 200,
    "pc_status": 200,
    "rid": "RID2",
    "url": "https://example.com/b",
    "body": "H4sIAAAA…"
  }
]

Массовое удаление

Удалите список RID одним вызовом. Возвращает статус по каждому RID, так что вы увидите те, которых уже не было или удаление которых не удалось.

POSThttps://api.crawlbase.com/storage/bulk_delete
curl -X POST 'https://api.crawlbase.com/storage/bulk_delete?token=YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{ "rids": ["RID1","RID2","RID3"] }'

Ответ — JSON-массив, по одной записи на каждый отправленный RID. status: true означает, что запись удалена; status: false с result: "Not Found" означает, что RID не существовал (уже был удалён, истёк срок или вообще не записывался).

[
  { "rid": "RID1", "result": "Deleted",   "status": true  },
  { "rid": "RID2", "result": "Not Found", "status": false },
  { "rid": "RID3", "result": "Failed",    "status": false }
]
Удаление необратимо

Дважды проверьте список RID перед отправкой. Нет ни мягкого удаления, ни отмены - если вам нужен восстанавливаемый сценарий, сначала извлеките данные с auto_delete=false и вызывайте /bulk_delete только после того, как сохраните тело локально.

Удаление одной страницы

Удалите одну запись из хранилища по RID. Используйте DELETE /storage с RID в строке запроса.

DELETEhttps://api.crawlbase.com/storage
curl -X DELETE 'https://api.crawlbase.com/storage?token=YOUR_TOKEN&rid=RID'

Три варианта ответа:

РезультатТело
Найдено и удалено{"success": "The Storage item has been deleted successfully"}
Найдено, но удаление не удалось{"error": "The Storage item could not be deleted"}
Нет в хранилище{"error": "Not Found"}

Список RID

Постранично перебирайте RID в вашей области хранения - инвентаризационный вызов. Для наборов данных, превышающих один ответ, используйте scroll-пагинацию ( scroll=true запускает scroll-сессию и возвращает scroll_id, который вы передаёте в последующих вызовах).

GEThttps://api.crawlbase.com/storage/rids
# First page
curl 'https://api.crawlbase.com/storage/rids?token=YOUR_TOKEN&limit=100&scroll=true'

# Next page - replay the scroll_id from the previous response
curl 'https://api.crawlbase.com/storage/rids?token=YOUR_TOKEN&scroll_id=dXVlcnlUaGVuRmV0Y2g7…'
limit
integerнеобязательный
Максимальное число RID, возвращаемых за один вызов. Предел - 10000. Значения по умолчанию нет - задавайте его явно.
scroll
booleanfalse
Когда true , ответ включает scroll_id, который вы можете передать для получения следующей страницы. Без него вы получите только первую страницу.
scroll_id
stringнеобязательный
Токен из предыдущего ответа. Передайте его, чтобы продвинуть прокрутку. Не передавайте scroll=true в последующих запросах - только в первом вызове.
scroll_order
asc | descdesc
Сортировка RID по сохранённой временной метке. По умолчанию — сначала новые.
{
  "rids": ["RID1", "RID2", "RID3", "..."],
  "scroll_id": "dXVlcnlUaGVuRmV0Y2g7NTs1NDpDV…"
}
Scroll-сессии истекают

scroll_id действителен примерно 15 секунд бездействия. Если вы видите "Scroll session has expired or is invalid" , начните заново со свежего запроса с scroll=true - курсор уже потерян.

Общее количество

Одно целое число: сколько страниц сейчас находится в вашем хранилище.

GEThttps://api.crawlbase.com/storage/total_count
curl 'https://api.crawlbase.com/storage/total_count?token=YOUR_TOKEN'

# Response
# { "totalCount": 5491078 }

Хранение и тарификация

  • Сохранённые страницы хранятся 14 дней по умолчанию . На enterprise-тарифах срок можно продлить.
  • Каждый вызов с store=true считается одним запросом - без дополнительной платы.
  • Извлечение (этот endpoint) бесплатно . Читайте столько раз, сколько нужно.
  • Если страница пересканируется с store=true, новая версия заменяет старую.
Где хранилище особенно полезно

Журналы аудита («что говорила страница, когда мы её сканировали?»), пайплайны переобработки (повторный парсинг сохранённого HTML, когда логика вашего скрапера улучшается) и отдача кэшированных результатов читателям без повторного сканирования.