您需要一个API来从Instagram获取帖子数据——具体来说,输入一个公共帖子URL并返回您可以在本周的应用中使用的媒体、尺寸和标识符。在本指南结束时,您将能够从URL获取Instagram帖子/发布数据,通过用户名提取账户数据,并使用Instagram数据API在Zyla API Hub上通过短代码获取卷轴指标,附带可复制的curl和Python示例。
此API为您提供的内容及使用时机
Instagram数据API公开了三个专注的读取端点:
- 获取帖子数据:提供一个公共Instagram帖子URL并接收帖子/发布数据,包括媒体URL、尺寸和标识符。
- 获取账户数据:提供一个用户名并接收Instagram账户数据,包括传记和个人资料链接。
- 获取卷轴数据:提供一个帖子/卷轴短代码并接收公共参与指标,如点赞、评论和视频观看次数。
典型用途包括内容摄取管道、链接展开、媒体预览生成、分析仪表板和审核队列。您发送的正是您已有的URL或短代码;API返回结构化字段以支持您的用户界面或工作流程。
该API可在Zyla API Hub上使用,这是一个拥有超过10,000个公共API的市场,统一在一个账户、一个API密钥和一个订阅+配额模型下(不是按调用计费)。对于此API,第一个订阅提供7天的试用;请查看列表以获取当前访问选项和定价。
在Zyla API Hub上开始
- 打开Instagram数据API列表:开始7天的Instagram数据API试用。
- 点击订阅(或在可用时开始免费试用)并获取您的API密钥。
- 在Authorization头中使用密钥,格式为:Authorization: Bearer YOUR_API_KEY。
本文中的所有请求都针对Zyla Hub端点URL。无需原始主机、SDK或额外的身份验证参数——只需使用您的Bearer令牌和文档中的查询参数发送HTTPS GET请求。
端点:获取帖子数据(通过URL)
通过传递公共帖子URL来检索Instagram帖子/发布数据。当您的系统存储或接收链接(例如,来自用户提交)时,这非常有用,您需要标识符、媒体URL和尺寸以进行渲染或下游处理。
- 方法:GET
- URL:https://zylalabs.com/api/855/instagram-data-api/630/get-post-data
- 所需查询参数:
- link(字符串):一个公共Instagram帖子URL,例如https://www.instagram.com/p/BsOGulcndj-(必须在查询字符串中进行URL编码)
curl示例(复制粘贴)
curl -s -X GET "https://zylalabs.com/api/855/instagram-data-api/630/get-post-data?link=https%3A%2F%2Fwww.instagram.com%2Fp%2FBsOGulcndj-" \
-H "Authorization: Bearer YOUR_API_KEY"
官方示例响应
{
"status": true,
"__typename": "GraphImage",
"id": "1949525278281554174",
"shortcode": "BsOGulcndj-",
"dimensions": {
"height": 584,
"width": 584
},
"gating_info": null,
"fact_check_overall_rating": null,
"fact_check_information": null,
"sensitivity_friction_info": null,
"sharing_friction_info": {
"should_have_sharing_friction": false,
"bloks_app_url": null
},
"media_overlay_info": null,
"media_preview": null,
"display_url": "https://instagram.fbcn2-1.fna.fbcdn.net/v/t51.82787-15/625727639_18338153224242257_3827527793310630488_n.jpg?stp=dst-jpg_e15_tt6&_nc_ht=instagram.fbcn2-1.fna.fbcdn.net&_nc_cat=105&_nc_oc=Q6cZ2gHBlHY2RHKNTgCNzMelAyz56Toi4DI7VUNsrK7XJAsoGT6ka4w7PVJ6IEqS7PD9Ulw&_nc_ohc=jwkKyc7eqGAQ7kNvwHmuCEW&_nc_gid=BiA9YpCodvi1HtqMj6W-Vg&edm=AOmX9WgBAAAA&ccb=7-5&ig_cache_key=MTk0OTUyNTI3ODI4MTU1NDE3NA%3D%3D.3-ccb7-5&oh=00_AQONRzWv-s9IPALJK9qeJ5FVyMcHbwpYaGsJhb7fdlV1nA&oe=6ACE9A40&_nc_sid=bfaa47",
"display_resources": [
{
"src": "https://instagram.fbcn2-1.fna.fbcdn.net/v/t51.82787-15/625727639_18338153224242257_3827527793310630488_n.jpg?stp=dst-jpg_e35_s360x360_sh2.08_tt6&_nc_cat=104&_nc_map=urlgen_bucketless&ig_cache_key=MTk0OTUyNTI3ODI4MTU1NDE3NA%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkZFRUQueHBpZHMuNTg0LnNkci5yZWd1bGFyX3Bob3RvLkMzIn0%3D&_nc_ohc=53XaOqCZWBYQ7kNvwFfkQTV&_nc_oc=AdprbrBLkElSfmNNOrQHEYQuCIz8F8lIlYN7TENXKNGCcZVnybmvx0uXH6fzElyfwak&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=instagram.fbcn2-1.fna&_nc_gid=BiA9YpCodvi1HtqMj6W-Vg&_nc_ss=7a3ba&oh=00_AQNBRrpvxf3JGSktIaicSqaD4UtCuDo9I8feI6acpRs9Eg&oe=6ACE9A40",
"config_width": 360,
"config_height": 360
},
{
"src": "https://instagram.fbcn2-1.fna.fbcdn.net/v/t51.82787-15/625727639_18338153224242257_3827527793310630488_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=104&_nc_map=urlgen_bucketless&ig_cache_key=MTk0OTUyNTI3ODI4MTU1NDE3NA%3D%3D.3-ccb7-5&ccb=7-5&_nc_sid=58cdad&efg=eyJ2ZW5jb2RlX3RhZyI6IkZFRUQueHBpZHMuNTg0LnNkci5yZWd1bGFyX3Bob3RvLkMzIn0%3D&_nc_ohc=53XaOqCZWBYQ7kNvwFfkQTV&_nc_oc=AdprbrBLkElSfmNNOrQHEYQuCIz8F8lIlYN7TENXKNGCcZVnybmvx0uXH6fzElyfwak&_nc_ad=z-m&_nc_cid=0&_nc_zt=23&_nc_ht=instagram.fbcn2-1.fna&_nc_gid=BiA9YpCodvi1HtqMj6W-Vg&_nc_ss=7a3ba&oh=00_AQMhFQizLfIe4bAcskLHhT2nCDcjFGyldOq2Cp7IMLuVxg&oe=6ACE9A40",
"config_width": 584,
"config_height": 584
}
],
"accessibility_caption…
您通常会使用的关键字段:
- id和shortcode:用于去重和索引的稳定标识符。
- __typename:帖子类型(例如,GraphImage)。
- dimensions.height和dimensions.width:渲染规划和响应式尺寸。
- display_url:用于预览或处理的直接媒体URL。
- display_resources:替代尺寸;选择最接近您目标视口的尺寸。
Python示例
此示例使用确切的URL调用获取帖子数据,并读取标识符、尺寸和媒体URL。注意:link参数必须进行URL编码。下面的代码使用与curl示例相同的编码URL。
import requests
API_URL = "https://zylalabs.com/api/855/instagram-data-api/630/get-post-data"
LINK_PARAM = "https%3A%2F%2Fwww.instagram.com%2Fp%2FBsOGulcndj-"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
resp = requests.get(f"{API_URL}?link={LINK_PARAM}", headers=HEADERS, timeout=30)
resp.raise_for_status()
data = resp.json()
# 提取应用中常用的字段
post_id = data.get("id")
shortcode = data.get("shortcode")
typename = data.get("__typename")
dims = data.get("dimensions") or {}
height = dims.get("height")
width = dims.get("width")
display_url = data.get("display_url")
print({
"id": post_id,
"shortcode": shortcode,
"type": typename,
"height": height,
"width": width,
"display_url": display_url
})
节省时间的实施说明
- URL编码:在构建查询时对链接参数进行编码。如果您动态构建URL,建议使用内置的URL编码器以避免双重编码。
- 缓存:将帖子id和shortcode与display_url一起存储,以避免在列表视图中重复获取相同的帖子。
- 媒体变体:选择接近您目标尺寸的display_resources大小,以减少客户端的调整大小。
- 错误处理:如果帖子变得不可用或私有,请预期在您的渲染管道中出现null或缺失字段。
端点:获取账户数据(通过用户名)
使用用户名获取Instagram账户数据。适用于个人资料卡、链接预览和入职验证。
- 方法:GET
- URL:https://zylalabs.com/api/855/instagram-data-api/631/get-account-data
- 所需查询参数:
- username(字符串):Instagram用户名,例如leomessi
curl示例
官方示例响应(截断)
在UI中考虑的字段:
- biography:在个人资料头部或悬停卡中显示。
- bio_links:呈现经过验证的外部链接列表;优先使用url进行直接导航。
端点:获取卷轴数据(通过短代码)
使用其短代码检索公共Instagram帖子或卷轴的指标。非常适合分析图块、排名列表和KPI监控。
- 方法:GET
- URL:https://zylalabs.com/api/855/instagram-data-api/32007/get-reel-data
- 所需查询参数:
- shortcode(字符串):例如,DctYV2qt6S5
curl示例
官方示例响应
实用说明:
- 使用video_view_count和play_count来驱动参与可视化;如果同时存在,请保留两者以与您的历史数据集保持一致。
- code是您作为shortcode传递的相同值;与您的内容密钥一起存储,以避免稍后重新解析。
设计您的集成
帖子URL的最小摄取流程
- 从用户或源接收一个公共Instagram URL。
- 使用URL编码的链接调用获取帖子数据。
- 在您的数据库中持久化id、shortcode、尺寸和display_url。
- 在可用时从display_resources渲染以匹配您的布局。
解析未知短代码
如果您只有一个URL并且需要短代码以进行下游分析(例如,调用获取卷轴数据),请首先调用获取帖子数据。响应包含短代码;将其存储,以便在需要时使用获取卷轴数据获取指标。
重试和超时
- 客户端超时:设置保守的超时(例如,30秒,如所示)并在您的应用程序对延迟容忍的情况下重试幂等的GET请求一次。
- 退避:实现指数退避以应对瞬态网络问题。
安全性和生产就绪性
- 授权:始终通过HTTPS发送Authorization: Bearer YOUR_API_KEY。
- 密钥管理:将您的密钥保存在秘密管理器或环境变量中。不要将其发送到客户端。
- 配额:该API使用订阅+配额模型(不是按调用计费)。在您的Zyla仪表板中监控使用情况,并缓存热门结果以减少重复调用。
从AI代理调用此API(MCP)
您可以通过Zyla的模型上下文协议端点从AI代理调用这些相同的Hub端点。这适用于与MCP兼容的客户端,如Claude Code、Cursor和Windsurf。
- MCP服务器端点:https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY
- 在您的代理中,配置MCP服务器并使用相同的API密钥进行授权。
- 从代理的工具中,向本文中显示的Hub URL发出GET请求,附带所需的查询参数和Authorization头。
有关MCP使用的更多信息,请参见:MCP。
现实世界用例
- 审核队列:当用户提交Instagram链接时,调用获取帖子数据以获取媒体和尺寸,以便为审核者UI提供支持,而无需手动截图。
- 链接展开:在聊天或评论中,检测Instagram URL并使用display_url和尺寸丰富预览,以获得清晰的缩略图。
- 创作者仪表板:为每个卷轴存储shortcode,并定期刷新获取卷轴数据以更新like_count、comment_count和video_view_count图块。
- 个人资料入职:在账户连接时,通过用户名调用获取账户数据,以填充带有传记和bio_links的个人资料卡。
故障排除检查清单
- 401 Unauthorized:验证Authorization头,确保格式为Authorization: Bearer YOUR_API_KEY。
- 空或部分字段:确保链接或短代码有效且公开;私有或已删除的内容将不会返回完整数据。
- 错误的查询参数:确认您使用link获取帖子数据,使用username获取账户数据,使用shortcode获取卷轴数据,并在适用时进行适当的URL编码。
- 超出配额行为:该API使用订阅+配额;检查您的仪表板和API列表以获取当前分配和选项。
端到端代码片段:链接输入,预览输出
将链接到帖子流程组合成一个助手,您可以将其放入后端路由中。这使用与上面演示的相同的端点和参数。
import os
import urllib.parse
import requests
API_KEY = os.getenv("ZYLA_API_KEY")
BASE_URL = "https://zylalabs.com/api/855/instagram-data-api/630/get-post-data"
def fetch_instagram_post(link: str):
params = {"link": urllib.parse.quote(link, safe="")}
url = f'{BASE_URL}?link={params["link"]}'
headers = {"Authorization": f"Bearer {API_KEY}"}
r = requests.get(url, headers=headers, timeout=30)
r.raise_for_status()
data = r.json()
return {
"id": data.get("id"),
"shortcode": data.get("shortcode"),
"type": data.get("__typename"),
"width": (data.get("dimensions") or {}).get("width"),
"height": (data.get("dimensions") or {}).get("height"),
"display_url": data.get("display_url"),
}
# 示例用法:
# preview = fetch_instagram_post("https://www.instagram.com/p/BsOGulcndj-")
# print(preview)
常见问题
需要什么身份验证?
每个请求都发送Authorization: Bearer YOUR_API_KEY。
我需要从URL派生短代码吗?
不需要。对于获取帖子数据,将完整的帖子URL传递给link。如果您稍后需要使用短代码的指标,请从获取帖子数据的响应中读取短代码,并将其传递给获取卷轴数据。
有免费计划吗?
没有免费计划。该API使用订阅+配额模型。列表提供7天的试用;请查看API页面以获取当前访问选项和定价。
我应该缓存哪些字段?
缓存帖子id、shortcode、尺寸和display_url;对于卷轴,如果您正在构建分析或趋势列表,请缓存shortcode及like_count、comment_count和video_view_count。
我可以从AI编码工具调用API吗?
可以。使用MCP端点和您的API密钥,让代理向此处描述的Hub URL发出相同的GET请求。
准备好发布了吗?创建您的账户,获取API密钥,并在此处开始您的7天Instagram数据API试用:开始7天的Instagram数据API试用。随时在Zyla API Hub探索更多API。