jsonscraper

Hoe je de contentdynamiek van IG-concurrenten meet: een API-pipeline in Python

Verzamel openbare berichten volgens een schema, bereken statistieken met je eigen gegevens en stuur je team een controleerbaar overzicht.

Redactioneel beleid Een fout melden

Een marketingteam kan berichten van concurrenten in de feed zien, maar handmatig bekijken geeft geen goed antwoord op een concrete vraag: welke formats en onderwerpen leveren regelmatig reacties op, en welke vielen maar één keer op? De oplossing is om dagelijks gegevens van openbare berichten op te slaan en ze in de tijd te vergelijken op format en beschikbare statistieken.

Artikel: Hoe je de contentdynamiek van IG-concurrenten meet: een API-pipeline in Python
Samenvatting: Een praktische aanpak om openbare IG-berichten te monitoren: een verzoek naar de IG Scraper API, JSON-normalisatie, dagelijkse momentopnamen en een berekening van de dynamiek waarbij cumulatieve en nieuwe reacties niet door elkaar lopen.
Beeldrol: omslag — het centrale idee
Sectie: 
Visueel onderwerp: Een digitaal analysedashboard dat een tijdlijn toont van openbare contentkaarten in IG-stijl, engagementcijfers en dagelijkse momentopnamen van gegevens, duide
© jsonscraper · AI-gegenereerde illustratie

Hieronder staat een basispipeline in Python met de IG Scraper API. Deze haalt berichten op van een geselecteerd account, slaat antwoorden op in JSONL en maakt een overzicht van nieuwe content. De interactiestatistieken in zo’n rapport geven de waarden weer die de API op het moment van verzamelen retourneert; momentopnamen van verschillende datums maken het mogelijk veranderingen afzonderlijk te analyseren.

Bepaal eerst wat je precies wilt vergelijken

Voor een kleine selectie concurrenten volstaat het om een lijst met openbare accounts bij te houden en hun berichten volgens één schema te verzamelen. Begin met vragen die de gegevens kunnen beantwoorden: hoe vaak verschijnt er content, welke berichten zijn Reels of andere formats, welke onderwerpen keren terug en hoe veranderen de beschikbare aantallen likes en reacties?

Maak in de opslag onderscheid tussen twee begrippen: een bericht en een momentopname ervan. Identificeer een bericht met een stabiele ID, als die in het antwoord aanwezig is; sla elke nieuwe run op als een afzonderlijke registratie met het verzameltijdstip. Zo kun je zien hoe beschikbare statistieken veranderen, in plaats van de waarde van gisteren te overschrijven met die van vandaag.

Gebruik de gedocumenteerde route

De documentatie van jsonscraper vermeldt voor een basisverzoek het adres https://ig.jsonscraper.com en de route GET /v1/user/by/username. Voor het ophalen van berichten vermeldt de API-kaart ook GET /v1/user/medias/chunk. Controleer de precieze parameters en antwoordvelden in de bij het product horende Postman-collectie: baseer je verwerkingscode niet op een veronderstelde structuur voordat je het echte antwoord voor je verzoek hebt onderzocht.

Gebruik voor een eerste controle het gedocumenteerde voorbeeldverzoek voor een profiel; geef de sleutel door via een omgevingsvariabele en neem deze niet op in de broncode:

curl -G "https://ig.jsonscraper.com/v1/user/by/username" \
  --data-urlencode "username=apple" \
  --data-urlencode "license_key=$JSONSCRAPER_LICENSE_KEY" \
  --data-urlencode "cache_timeout=60"

Het voorbeeld op de productpagina toont username, license_key en cache_timeout voor de profielroute. Gebruik die parameter alleen voor andere routes als de documentatie dat voor die routes vermeldt. Haal voor een verzoek om berichten de actuele parameternamen uit de specificatie van die route.

Sla antwoorden op als momentopnamen met tijdstempel

Het volgende script is een basis voor een productieklare run: de URL en parameters voor de route met berichten staan in de configuratie, zodat je die strikt volgens de Postman-documentatie kunt invullen. De verwerking slaat de oorspronkelijke JSON en het verzameltijdstip op; voeg normalisatie van velden toe nadat je het daadwerkelijke antwoord hebt gecontroleerd.

import json
import os
from datetime import datetime, timezone
from pathlib import Path

import requests

BASE_URL = "https://ig.jsonscraper.com"
USERNAME = os.environ["IG_USERNAME"]
LICENSE_KEY = os.environ["JSONSCRAPER_LICENSE_KEY"]
OUTPUT = Path("instagram_snapshots.jsonl")

# Vul het endpoint en de parameters in volgens de documentatie van de route
# GET /v1/user/medias/chunk in de Postman-collectie.
MEDIA_PATH = os.environ["IG_MEDIA_PATH"]
MEDIA_PARAMS = json.loads(os.environ["IG_MEDIA_PARAMS_JSON"])

params = {
    **MEDIA_PARAMS,
    "username": USERNAME,
    "license_key": LICENSE_KEY,
}

response = requests.get(
    f"{BASE_URL}{MEDIA_PATH}", params=params, timeout=30
)
response.raise_for_status()
payload = response.json()

record = {
    "collected_at": datetime.now(timezone.utc).isoformat(),
    "username": USERNAME,
    "response": payload,
}
with OUTPUT.open("a", encoding="utf-8") as file:
    file.write(json.dumps(record, ensure_ascii=False) + "\n")

Er zijn bewust geen paginatieparameters of veldnamen verzonnen: kopieer ze uit de specifieke specificatie en controleer ze aan de hand van het API-antwoord. Verzoeken met een time-out en raise_for_status() helpen een netwerkfout op te sporen voordat het resultaat als gewone gegevens wordt opgeslagen. Voeg voor automatische runs JSON-validatie en een foutenlogboek toe.

Voeg een schema en statistieken toe

Voer de verzameling eenmaal per dag uit met cron of de planner van je automatisering. Loop voor meerdere accounts een configuratielijst af, sla voor elk account een afzonderlijke momentopname op en maak een nieuwe poging mogelijk na een tijdelijke fout. Bewaar de sleutel in een omgevingsvariabele of geheimenopslag; de API-pagina raadt ook apart aan om deze niet in clientcode in te bouwen.

Normaliseer de records na controle van het antwoord naar een tabel met velden zoals username, media_id, collected_at, het contenttype en beschikbare statistieken. Verwijder de oorspronkelijke JSON niet: die is nuttig als de antwoordstructuur verandert of als je een berekening moet controleren.

Bereken in de analyselaag het aantal nieuwe berichten per periode, de mediaan van de beschikbare interacties per format en de verandering in de statistiek van hetzelfde bericht tussen momentopnamen. De mediaan beperkt de invloed van één virale post op het overzicht. Vergelijk accounts over dezelfde tijdvakken en vermeld naast elke aggregatie de omvang van de steekproef.

Wat levert het op?

Het team krijgt een reproduceerbare tabel met berichten en een dagelijks overzicht van hoe vaak content verschijnt, de verdeling over formats en de dynamiek van beschikbare interacties. Deze informatie helpt hypotheses op te stellen voor de eigen redactionele planning, in plaats van alleen screenshots uit de feed te verzamelen.

De volgende stap is om genormaliseerde records naar Google Sheets, een database of een visualisatiesysteem te sturen en het tekstuele overzicht in een afzonderlijke stap te maken. Als je AI inzet, geef die dan geaggregeerde gegevens en vraag om waargenomen patronen te beschrijven met vermelding van de periode en het aantal berichten; laat de redactionele strategie aan de redacteur over.

Begin met één account en één route: controleer de parameters en antwoordstructuur in de beschrijving van de IG Scraper API en leg die configuratie vervolgens vast in het schema. Zo wordt het monitoren van concurrenten een overzichtelijke pipeline met bewaarde geschiedenis, in plaats van een eenmalige handmatige blik.

People

No people listed for this article yet.

Keep readingIG scrapen met Python
Read the next article

Maak van wat je leest een werkende integratie

Ontdek de socialdata-API's van jsonscraper, test aanvragen en bouw je volgende workflow.

API's verkennen