The same object comes back from every platform. Fields that do not apply are returned as null rather than being left out, so your parser never has to check whether a key exists.
Top level
Field
Type
Notes
platform
string
Always present — the network the link came from
type
string
video, image, album or audio
title
string | null
The caption, when the post has one
author
string | null
Set where the source exposes it; null on Instagram
thumbnail
string | null
Preview image; not returned for Instagram carousels
duration
number | null
Seconds, where the source reports it
media
array
Always present, always at least one item
Inside media
Field
Type
Notes
type
string
video, image or audio
url
string
Direct link to the file — always present
quality
string | null
Set where several renditions exist, e.g. 720p
ext
string | null
File extension, where the source reports it
Writing against it
data = response.json()
if data["type"] == "album":
print(len(data["media"]), "files")
for item in data["media"]:
download(item["url"])