jsonscraper

Dagelijkse monitoring van IG-creators opzetten met Python

Een pipeline voor marketeers en analisten: openbare profielgegevens ophalen, momentopnamen opslaan en veranderingen vinden zonder accounts handmatig te controleren.

Redactioneel beleid Een fout melden

Marketingteams moeten soms tientallen accounts handmatig controleren om te zien welke potentiële creators actief zijn, hoe hun publiek verandert en wanneer een profiel voor het laatst is bijgewerkt. Een eenmalige spreadsheet is al snel verouderd: het aantal volgers en de profielbeschrijving veranderen, terwijl publicatiedatums en statistieken van afzonderlijke posts telkens opnieuw moeten worden verzameld.

Artikel: Dagelijkse monitoring van IG-creators opzetten met Python
Samenvatting: Zo automatiseer je met de IG Scraper API de dagelijkse monitoring van openbare IG-profielen: profielgegevens opvragen, waarnemingen bijhouden en een wijzigingsrapport opstellen.
Afbeeldingsrol: omslag — het centrale idee
Sectie: 
Visueel onderwerp: Een conceptueel dashboard voor een datapipeline: een overzichtelijk raster met openbare socialemediaprofielen voert tijdgestempelde JSON-records aan naar een eenvoudige analysec
© jsonscraper · AI-gegenereerde illustratie

Een praktische oplossing is een beknopt waarnemingslogboek: vraag eenmaal per dag openbare profielen uit een vooraf samengestelde lijst op, sla elk antwoord op met het tijdstip van verzamelen en vergelijk nieuwe waarden met eerdere momentopnamen. Zo kun je accounts selecteren voor verdere handmatige controle, activiteit beoordelen en periodieke rapporten opstellen. Dit vervangt geen analyse door de accounteigenaar: openbare profielgegevens geven bijvoorbeeld geen toegang tot interne bereikcijfers.

Bepaal eerst wat je wilt volgen

Voor het vinden van potentiële partners is een korte lijst met velden meestal voldoende: gebruikersnaam, profiel-ID, verificatiestatus, aantal volgers, aantal posts, biografie en verzameltijd. Daarmee kun je veranderingen in een profiel opmerken en accounts binnen een gekozen niche met elkaar vergelijken. De beschikbare velden hangen af van het API-antwoord; controleer daarom de actuele JSON in de documentatie en ga niet uit van velden die daar niet in staan.

Om activiteit rond content te volgen, kun je profielgegevens aanvullen met publicatiegegevens. De kaart van de IG Scraper API vermeldt aparte routes voor gebruikersmedia en videoclips, plus verzoeken voor media en reacties. Voeg die als afzonderlijke stap toe nadat je het profiel hebt gecontroleerd: bevestig eerst de benodigde parameters en de antwoordstructuur in Postman en leg daarna alleen de velden vast die je rapport echt nodig heeft.

Een handige regel voor monitoring: bewaar ruwe antwoorden apart van genormaliseerde rijen. Met de ruwe JSON kun je de interpretatie opnieuw controleren als het API-antwoord verandert; een genormaliseerde tabel is geschikt voor grafieken en filters. Sla in beide gevallen het tijdstip van de aanvraag op, zodat je actuele waarden van historische waarden kunt onderscheiden.

Verbind de IG Scraper API

Het basisadres van de IG API van jsonscraper is https://ig.jsonscraper.com. In de officiële documentatie staat een profielverzoek op basis van gebruikersnaam: GET /v1/user/by/username met de parameters username, license_key en cache_timeout. Voor een testaccount toont de documentatie bijvoorbeeld een URL in deze vorm: https://ig.jsonscraper.com/v1/user/by/username?username=apple&license_key=YOUR_LICENSE_KEY&cache_timeout=60. Gebruik de cacheparameter alleen volgens de voorwaarden van de betreffende route en je eigen behoeften: de pollingfrequentie moet passen bij hoe snel je updates nodig hebt.

Bekijk voor de antwoordstructuur de pagina van de IG Scraper API en open de bijbehorende Postman-collectie. In het voorbeeld bevat een geslaagd antwoord een status, een object ig met de profiel-ID, gebruikersnaam en verificatiestatus, plus een tijdstempel. De documentatie vermeldt daarnaast groepen routes voor gebruikers, media, zoeken, hashtags en locaties. Daarmee kun je de verzameling uitbreiden zodra de analysebehoefte duidelijker is.

Bewaar de API-sleutel in een omgevingsvariabele, niet in de broncode of een clientapplicatie. jsonscraper raadt in de documentatie aan de sleutel in de omgeving op te slaan en deze niet in clientbuilds op te nemen. Beperk de toegang tot de sleutel in de productieomgeving, bijvoorbeeld door deze alleen beschikbaar te maken voor de achtergrondtaak die de gegevens verzamelt.

Een minimaal werkend Python-voorbeeld

Het onderstaande script leest gebruikersnamen uit een omgevingsvariabele, vraagt elk profiel op en schrijft de antwoorden naar een JSONL-bestand. JSONL is handig voor een eerste prototype: elke regel is één momentopname. De code bewaart bewust het volledige antwoordobject, in plaats van ervan uit te gaan dat alle profielvelden altijd aanwezig zijn. Bekijk na de eerste uitvoering het daadwerkelijke antwoord en maak pas daarna een stabiel tabelschema.

import json
import os
import time
from datetime import datetime, timezone
from pathlib import Path
from urllib.parse import urlencode
from urllib.request import Request, urlopen

API_KEY = os.environ["JSONSCRAPER_LICENSE_KEY"]
USERNAMES = [name.strip() for name in os.environ["IG_USERNAMES"].split(",") if name.strip()]
BASE_URL = "https://ig.jsonscraper.com/v1/user/by/username"
OUTPUT = Path("instagram_profiles.jsonl")


def fetch_profile(username: str) -> dict:
    query = urlencode({
        "username": username,
        "license_key": API_KEY,
        "cache_timeout": 60,
    })
    request = Request(f"{BASE_URL}?{query}", headers={"Accept": "application/json"})
    with urlopen(request, timeout=30) as response:
        return json.load(response)


with OUTPUT.open("a", encoding="utf-8") as output:
    for username in USERNAMES:
        collected_at = datetime.now(timezone.utc).isoformat()
        try:
            payload = fetch_profile(username)
            row = {
                "collected_at": collected_at,
                "requested_username": username,
                "ok": True,
                "payload": payload,
            }
        except Exception as exc:
            row = {
                "collected_at": collected_at,
                "requested_username": username,
                "ok": False,
                "error": str(exc),
            }

        output.write(json.dumps(row, ensure_ascii=False) + "\n")
        output.flush()
        time.sleep(1)

Stel de configuratie vóór het uitvoeren in via de omgeving:

export JSONSCRAPER_LICENSE_KEY="uw_sleutel"
export IG_USERNAMES="creator_one,creator_two,creator_three"
python monitor.py

De pauze in het voorbeeld zorgt ervoor dat de lijst rustig en achtereenvolgens wordt verwerkt; dit is geen opgegeven API-limiet. Stel voor een productieschema de frequentie en foutafhandeling in op basis van je abonnement, de documentatie en de gewenste actualiteit. Als een aanvraag mislukt, maakt de opgeslagen regel het probleem zichtbaar in plaats van het account stilzwijgend over te slaan.

Normaliseer gegevens nadat je het antwoord hebt gecontroleerd

Stel na het bekijken van het antwoord voor de gebruikte route een stabiele set kolommen samen. Een waarnemingstabel kan bijvoorbeeld het verzameltijdstip, de gebruikersnaam, de profiel-ID, de gecontroleerde antwoordstatus en de benodigde tellers bevatten, voor zover die in de JSON aanwezig zijn. Bepaal voor elk veld wat er gebeurt als het ontbreekt: sla een lege waarde op, markeer de regel als onvolledig of zet deze klaar voor een nieuwe controle.

Overschrijf de rij van gisteren niet met de waarde van vandaag. Een geschiedenis van momentopnamen is nodig om verschillen tussen datums te berekenen en veranderingen op te merken. Bereken voor het aantal volgers het verschil tussen opeenvolgende geslaagde waarnemingen van hetzelfde profiel. Een stabiele ID is daarvoor geschikter dan alleen een gebruikersnaam, die kan veranderen.

Bewaar ruwe antwoorden niet langer dan nodig als ze meer gegevens bevatten dan je rapport vereist. De genormaliseerde tabel hoort alleen velden te bevatten die voor de specifieke taak relevant zijn. Voor openbaar onderzoek naar creators beperkt dit doorgaans de hoeveelheid gegevens en maakt het eenvoudiger uit te leggen waarom je die verzamelt.

Voeg een dagelijkse uitvoering en melding toe

Op een server kun je het script met een taakplanner zoals cron uitvoeren; in een automatiseringstool kan dat op een schema en met een HTTP-aanvraag. De basisstroom bestaat uit een trigger, het inlezen van de profiellijst, het achtereenvolgens aanroepen van de route, het controleren van geslaagde antwoorden, het opslaan van regels en het maken van een samenvatting. In n8n of Make kun je deze stappen in afzonderlijke knooppunten verdelen, zodat een fout bij één profiel niet de hele verzameling stopt.

Bereken voor het rapport eenvoudige statistieken: hoeveel profielen met succes zijn verwerkt, welke het aantal volgers hebben veranderd ten opzichte van de vorige geslaagde momentopname en wanneer een regel voor het laatst is bijgewerkt. Een aparte foutenlijst helpt om onjuiste gebruikersnamen, niet-beschikbare profielen en tijdelijke aanvraagproblemen snel te vinden. Als je publicaties toevoegt, bepaal dan eerst de gewenste historische diepte en velden en sluit daarna de passende route uit de documentatie aan.

Stel caching ook bewust in. De documentatie beschrijft cache_timeout als een parameter van ondersteunde routes waarmee recente resultaten opnieuw kunnen worden gebruikt. Kies voor een dagelijks vergelijkingsrapport een instelling die past bij de vereiste actualiteit. Vermeng een gecachet antwoord niet met een nieuwe meetwaarde zonder dat in het logboek te vermelden.

Wat deze monitoring oplevert

Na verloop van tijd krijgt het team een controleerbare waarnemingsgeschiedenis van de geselecteerde openbare profielen. Je kunt veranderingen in statistieken vergelijken, registraties vinden die al lang niet zijn bijgewerkt en een korte lijst met accounts samenstellen voor handmatige beoordeling. Als mediaverzameling voor de gekozen route en taak beschikbaar is, kun je publicaties aan profielen toevoegen en het posttempo of de contentformats analyseren — mits de betreffende velden in de documentatie zijn bevestigd.

Gebruik statistieken als filter voor onderzoekswerk, niet als automatische beslissing over een samenwerking. Het aantal volgers zegt op zichzelf niets over de aansluiting van het publiek bij een merk, de kwaliteit van content of de commerciële geschiktheid van een maker. Controleer het profiel ook zelf en houd de selectiecriteria apart van de technische gegevensverzameling.

Open voor een proefrun de IG API-collectie in Postman, stel de sleutel in en voer een profielverzoek uit. Neem de gecontroleerde parameters vervolgens over in het script of de automatisering. Zo krijg je een reproduceerbare dagelijkse gegevensverzameling, een wijzigingsgeschiedenis en een basis voor analytische rapportage, zonder zelf een parser voor webpagina’s te hoeven bouwen.

People

No people listed for this article yet.

Keep readingHoe je de contentdynamiek van IG-concurrenten meet: een API-pipeline in 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