Et markedsføringsteam kan se konkurrentenes innlegg i feeden, men manuell gjennomgang gir ikke noe godt svar på et konkret spørsmål: Hvilke formater og temaer får jevnlig reaksjoner, og hvilke ble bare lagt merke til én gang? Løsningen er å lagre data om offentlige innlegg daglig og sammenligne dem over tid, etter format og tilgjengelige tellere.

Nedenfor finner du en grunnleggende pipeline med Python og IG Scraper API. Den henter innlegg fra en valgt konto, lagrer svarene i JSONL og lager en oppsummering av nytt innhold. Reaksjonstallene i en slik rapport viser verdiene API-et returnerte på innsamlingstidspunktet; øyeblikksbilder fra ulike datoer gjør det mulig å analysere endringene separat.
Bestem først hva du skal sammenligne
For et lite utvalg konkurrenter er det nok å føre en liste over offentlige kontoer og samle inn innleggene etter én fast tidsplan. Begynn med spørsmål dataene kan besvare: Hvor ofte publiseres det innhold? Hvilke innlegg er Reels eller andre formater? Hvilke temaer går igjen, og hvordan endres tilgjengelige tellere for likerklikk og kommentarer?
Skill mellom to begreper i lagringen: et innlegg og et øyeblikksbilde av det. Identifiser innlegget med en stabil ID hvis svaret inneholder en; lagre hver nye kjøring som en egen post med innsamlingstidspunkt. Da kan du se hvordan tilgjengelige tellere har endret seg, i stedet for å overskrive gårsdagens verdi med dagens.
Bruk det dokumenterte endepunktet
Dokumentasjonen fra jsonscraper oppgir adressen https://ig.jsonscraper.com og endepunktet GET /v1/user/by/username for en grunnleggende forespørsel. API-oversikten viser også GET /v1/user/medias/chunk for å hente innlegg. Kontroller nøyaktig hvilke parametere og svarfelter som gjelder, i den tilknyttede Postman-samlingen: Ikke bind behandleren til en antatt struktur før du har undersøkt det faktiske svaret på forespørselen din.
Bruk det dokumenterte eksempelet på en profilforespørsel for en første kontroll; send nøkkelen via en miljøvariabel i stedet for å skrive den inn i kildekoden:
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"
Eksempelet på produktsiden viser username, license_key og cache_timeout for profilendepunktet. Bruk bare parameteren på andre endepunkter hvis dokumentasjonen oppgir den der. For forespørsler om innlegg henter du de gjeldende parameternavnene fra spesifikasjonen for det aktuelle endepunktet.
Lagre svar som tidsstemplede øyeblikksbilder
Det følgende skriptet er et utgangspunkt for en produksjonskjøring: URL-en og parameterne for endepunktet for innlegg ligger i konfigurasjonen, slik at du kan fylle dem inn nøyaktig etter Postman-dokumentasjonen. Behandleren lagrer den opprinnelige JSON-en og innsamlingstidspunktet; legg til normalisering av feltene etter at du har kontrollert det faktiske svaret.
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")
# Fyll inn endepunkt og parametere fra dokumentasjonen for
# GET /v1/user/medias/chunk i Postman-samlingen.
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")
Skriptet inneholder med vilje ingen oppdiktede pagineringsparametere eller feltnavn: Kopier dem fra den konkrete spesifikasjonen og kontroller dem mot API-svaret. Forespørsler med tidsavbrudd og raise_for_status() gjør det mulig å fange opp nettverksfeil før resultatet lagres som vanlige data. Legg til JSON-validering og en feillogg for automatiserte kjøringer.
Legg til tidsplan og måltall
Kjør innsamlingen én gang om dagen med cron eller planleggeren i automatiseringsverktøyet ditt. For flere kontoer går du gjennom en konfigurasjonsliste, lagrer et eget øyeblikksbilde for hver konto og legger til rette for ny kjøring etter midlertidige feil. Oppbevar nøkkelen i en miljøvariabel eller en hemmelighetslagring; API-siden anbefaler også uttrykkelig at den ikke bygges inn i klientkode.
Etter at du har kontrollert svaret, normaliserer du postene i en tabell med felt som username, media_id, collected_at, innholdstype og tilgjengelige tellere. Ikke slett den opprinnelige JSON-en: Den kan være nyttig hvis svarformatet endres eller du må kontrollere en beregning.
I analyselaget beregner du antall nye innlegg per periode, medianen for tilgjengelige reaksjoner etter format og endringen i telleren for samme innlegg mellom øyeblikksbilder. Medianen reduserer virkningen av ett enkelt viralt innlegg på oppsummeringen. Sammenlign kontoer over like lange tidsrom, og vis utvalgsstørrelsen ved siden av aggregatet.
Dette får du ut
Teamet får en etterprøvbar tabell over innlegg og en daglig oppsummering av publiseringsfrekvens, fordeling på formater og utvikling i tilgjengelige reaksjoner. Informasjonen hjelper dere med å formulere hypoteser for deres egen publiseringsplan, i stedet for bare å samle skjermbilder fra feeden.
Neste steg er å sende normaliserte poster til Google Sheets, en database eller et visualiseringsverktøy og generere tekstsammendraget som et eget trinn. Hvis du kobler til KI, bør du sende den aggregerte data og be den beskrive observerte mønstre med opplysninger om periode og antall innlegg; la redaktøren ta strategiske beslutninger.
Begynn med én konto og ett endepunkt: Kontroller parametere og svarstruktur i beskrivelsen av IG Scraper API, og legg deretter konfigurasjonen inn i tidsplanen. Slik blir konkurrentovervåking en oversiktlig pipeline med lagret historikk, i stedet for en engangs manuell gjennomgang.