Extract
Peça os campos que você quer e receba tudo em JSON. Um modelo lê a página que a gente já buscou, então não tem parser para escrever nem HTML para olhar.
Uma chamada
curl -X POST https://api.scrapa.app/v1/scrape \
-H "authorization: Bearer sc_live_your_key" \
-H "content-type: application/json" \
-d '{
"url": "https://example.com/produto/1",
"formats": ["extract"],
"extract": {
"schema": {
"type": "object",
"properties": {
"name": { "type": "string" },
"price": { "type": "number" },
"inStock": { "type": "boolean" }
}
}
}
}'{
"data": {
"url": "https://example.com/produto/1",
"finalUrl": "https://example.com/produto/1",
"status": 200,
"engine": "fetch",
"pool": "residential",
"bytes": 48213,
"extract": {
"name": "Cafeteira italiana 6 xícaras",
"price": 149.9,
"inStock": true
},
"metadata": { "title": "Cafeteira italiana 6 xícaras", "contentType": "text/html" }
}
}Coloque extract em formats, diga quais campos você quer, e a resposta vem com eles. É o mesmo scrape de sempre (mesmas engines, mesmas saídas, mesmas negativas) com uma coisa a mais dentro.
Uma frase no lugar do schema
{
"url": "https://blog.example.com/post",
"formats": ["extract"],
"extract": { "prompt": "the author, the date it was published and the three main points" }
}O schema fixa o formato. Quando você ainda não tem um, diga o que quer com as suas palavras e o modelo escolhe o formato. Mande os dois quando um campo precisar de explicação: prompt é onde você diz que o preço que interessa é o de depois do desconto.
O que a página não disse
Campo que a página não traz volta null. A promessa do recurso inteiro é essa: um buraco que você consegue verificar vale mais que um número plausível que você não consegue.
E quando é o modelo que não responde (se negou, estourou o tempo, escreveu algo que não é JSON), o extract volta null, aquele crédito volta para você, e a página que você pediu continua respondendo.
Ele lê, não conta
Peça os preços de uma página e você recebe os preços. Peça a soma e você recebe um número que parece certo e muitas vezes não é. Medimos aqui numa lista de vinte itens, e dois modelos diferentes devolveram cada um a sua soma, os dois errados. Puxe os campos e some no seu próprio código, onde conta é conta.
A forma de shell
curl "https://api.scrapa.app/v1/scrape?url=https://example.com/produto/1&format=extract&extractPrompt=the+name+and+the+price" \
-H "authorization: Bearer sc_live_your_key"?format=extract&extractPrompt=… leva a metade em palavras direto do terminal. Um JSON Schema fica no corpo do POST, escrito como JSON em vez de codificado numa URL que ninguém consegue ler.
Quanto custa
Cinco créditos além da engine que leu a página: seis no total num fetch simples, dez quando a página precisou de um navegador. A cobrança é junto com a página, não depois, então um quote te dá o número antes de você gastar.
Página bloqueada pelo site não custa nada, extração inclusive: não teve página para ler. Se um script seu de browser.actions rodou nela antes, o preço do navegador e o tráfego são cobrados, e os 5 créditos da extração voltam para você.