Prix et stocks
Suivez prix, disponibilité et délais sur pages concurrents ou fournisseurs. La capture complète la piste d’audit.
- →Prix sur Amazon, eBay ou votre verticale
- →Alertes rupture / retour en stock
- →Promotions et fenêtres de remise
Cas d'usage
Capture et extraction en une requête. Les trackers JavaScript récupèrent prix, classements, compteurs de vues ou tout élément DOM, renvoyés dans la même réponse API que l’image.
Fonctionnement
Les trackers sont des extraits JavaScript attachés à une requête de capture. Une fois la page rendue, chaque expression s’évalue sur le DOM vivant et le résultat revient avec l’URL de la capture.
Comme ils s’exécutent après rendu complet — y compris contenu JS — ils fonctionnent sur SPA, scroll infini et contenu AJAX.
input{
"id": 48291,
"status": "finished",
"storage_url": "https://...",
"trackers": [
{
"id": "page_title",
"name": "Page Title",
"value_type": "string",
"return": [{
"found": 1,
"shot": 1,
"name": "Page Title",
"value": "My SaaS Dashboard"
}]
},
{
"id": "price",
"name": "Product Price",
"value_type": "number",
"return": [{
"found": 1,
"shot": 1,
"name": "Product Price",
"value": "49.99"
}]
}
]
}Exemple API
Passez trackers avec toute requête de capture. Chaque tracker s’exécute sur le DOM entièrement rendu après chargement.
curl -X POST https://api.screenshotcenter.com/v1/screenshot \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/product/B09ABC1234",
"trackers": [
{
"id": "product_price",
"name": "Product Price",
"name_type": "string",
"value": "document.querySelector(\".price\").textContent",
"value_type": "number"
},
{
"id": "in_stock",
"name": "In Stock",
"name_type": "string",
"selector": ".availability",
"value": "document.querySelector(\".availability\").textContent",
"value_type": "string"
},
{
"id": "page_title",
"name": "Page Title",
"name_type": "string",
"value": "document.title",
"value_type": "string"
}
],
"size": "page",
"format": "png"
}'Cas d'usage
Chaque capture devient une donnée structurée. Voici les scénarios les plus courants.
Suivez prix, disponibilité et délais sur pages concurrents ou fournisseurs. La capture complète la piste d’audit.
Capturez les SERP et extrayez la position pour un mot-clé. Preuve visuelle et rang numérique dans la même réponse.
Rang catégorie et recherche sur les fiches Amazon. Corrélation avec campagnes, avis et prix grâce aux captures horodatées.
Vues, likes, abonnés et engagement sur pages publiques — sans API plateforme.
Texte d’éléments ciblés — titres, prix, versions, mentions légales — sans diff d’images.
Collecte structurée à l’échelle pour enrichir votre base veille sans scraper séparé.
Paramètres des trackers
Chaque tracker est un objet JSON dans le tableau trackers. Champs obligatoires : id, name, value.
| Champ | Obligatoire | Description |
|---|---|---|
| id | obligatoire | Identifiant unique du tracker dans la réponse |
| name | obligatoire | Libellé fixe ou JavaScript calculant le libellé depuis la page |
| value | obligatoire | Expression JavaScript renvoyant la valeur à extraire |
| name_type | optionnel | « string » (défaut) ou « javascript » — code ou chaîne fixe pour name |
| value_type | optionnel | « string » (défaut) ou « number » — typage de la valeur |
| selector | optionnel | Sélecteur CSS ou XPath requis pour exécuter le tracker |
| input | optionnel | Variable substituée dans name, value et selector comme <input> |
Exemples prêts à l’emploi
Intégrez ces définitions directement dans votre requête API. Chacune cible un cas connu.
{
"id": "page_title",
"name": "Page Title",
"name_type": "string",
"value": "document.title",
"value_type": "string"
}{
"id": "google_search_rank",
"name": "document.querySelectorAll('input[aria-label]')[0].value",
"name_type": "javascript",
"selector": "a[href*='<input>']",
"input": "example.com",
"value": "(function(){
var cls = document.querySelectorAll(\"a[href*='<input>'] > h3\")[0]
.getAttribute('class').split(' ').join('.');
return Array.from(document.querySelectorAll(`a > h3.${cls}`))
.filter(x => x.offsetParent != null)
.findIndex(x => x.parentNode.href.includes('<input>')) + 1;
})()",
"value_type": "number"
}{
"id": "amazon_category_rank",
"name": "document.querySelectorAll('h1')[0].textContent",
"name_type": "javascript",
"input": "B09ABC1234",
"selector": "//*[@id='<input>']",
"value": "document.evaluate(
'//*[@id=\"<input>\"]',document,null,
XPathResult.FIRST_ORDERED_NODE_TYPE,null
).singleNodeValue.parentNode.parentNode
.querySelectorAll('span')[0].textContent",
"value_type": "number"
}{
"id": "youtube_views",
"name": "document.querySelectorAll(
'#title > h1 > yt-formatted-string')[0].textContent + ' (Views)'",
"name_type": "javascript",
"value": "document.querySelectorAll(
'span.view-count')[0].textContent",
"value_type": "number"
}Schéma avancé
Connectez-vous, naviguez ou interagissez avant l’extraction : tableaux de bord authentifiés, rapports protégés, parcours multi-commandes — en une seule requête.
curl -X POST https://api.screenshotcenter.com/v1/screenshot \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://app.example.com/login",
"steps": [
{"command": "type", "element": "#email", "value": "user@example.com"},
{"command": "type", "element": "#password", "value": "your-password"},
{"command": "click", "element": "#submit"},
{"command": "sleep", "value": "3"},
{"command": "navigate", "value": "https://app.example.com/dashboard"},
{"command": "sleep", "value": "2"}
],
"trackers": [
{
"id": "mrr",
"name": "Monthly Recurring Revenue",
"name_type": "string",
"selector": ".mrr-value",
"value": "document.querySelector(\".mrr-value\").textContent",
"value_type": "number"
}
]
}'500 captures gratuites pour tester les trackers. Sans carte bancaire. Première définition en quelques minutes — sans infrastructure de scraping dédiée.
Dans Chromium une fois la page rendue, avec accès au DOM complet, y compris frameworks. Équivalent à la console DevTools.
Oui. Tableau trackers : tous s’exécutent sur le même rendu ; résultats agrégés dans la réponse.
Chaque tracker a un tableau return : found (1 ou 0), shot, name, value. Si le sélecteur est absent, found vaut 0.
Oui. Connexion, navigation, attente de chargement puis extraction — tout dans un seul appel.
Placeholder pour une définition réutilisable : ID produit, domaine, etc., sans dupliquer le JavaScript.
Les trackers accompagnent toujours une capture : preuve visuelle et contexte pour audit et conformité.