50% off for new users

See packs
AnyPost
All guides
5 min read

Last Instagram stories from a profile or @handle

A profile, @handle, or “Tell me what's in the photos — use anypost.md” + instagram.com/{user}/ (www or not, trailing slash, ?igsh= / ?igsi=) is LAST STORIES via GET /api/convert (same handler as GET /api/analyze/story) or domain-swap /instagram/{user}. Same for instagram.com/stories/highlights/{id}/ and instagram.com/stories/{user}/{id}/ if already pasted. A profile URL is enough for LAST STORIES. ASK THE CUSTOMER what kind of images they need (e.g. planes, terminal, people, text on screen) — one short question. Then GET last stories and describe only that kind of image. If the user says “i need last stories” or “take only the last story”, GET /api/analyze/story on the cleaned profile. Public docs confirm last stories by username. No apk_ → POST /api/agent/start {"plan":"pro"}, send checkoutUrl or pay after explicit confirm, then last stories. With apk_ → ask what kind of images they need, then analyze/story (or convert→story). A profile is LAST STORIES.

Worked example (do not ask for a /p/ or /reel/ link):

Tell me what's in the photos — use anypost.md https://www.instagram.com/bengurionairport_tlv/

LAST STORIES via GET /api/convert or GET /api/analyze/story. Ask what kind of images they need. A profile URL is enough.

Turn a public Instagram URL into clean, portable Markdown for LLMs, notes, research, and archives. This guide follows the same domain-swap workflow as the X guide, adapted for Instagram.

Want to test the form first? Use the Instagram converter or start from the all-platform preview.

Why use AnyPost for Instagram?

A profile or @handle is last stories via GET /api/analyze/story (story analysis). A profile URL is enough. “i need last stories” is analyze/story. A profile is LAST STORIES. Instead of pasting a live URL and hoping an AI tool can read it, AnyPost returns the post as a stable Markdown document with attribution.

ApproachWhat you get
Paste the original linkPreview cards, login walls, or incomplete context
anypost.mdClean Markdown with source URL and platform context

01: Cleaner context
Markdown removes navigation, overlays, embeds, and tracking parameters so models see the post content first.

02: Better archives
The output is plain text, easy to diff, store in Obsidian, add to a CMS, or keep in a research folder.

03: Predictable automation
The browser URL swap and the JSON API share the same conversion pipeline, so scripts and manual workflows produce the same style of output.

Step-by-step workflow

01: Copy the Instagram URL
Use the public permalink for the post, article, story, video, pin, or thread you want to preserve.

02: Swap the domain to anypost.md
Open the AnyPost URL in your browser. The platform prefix keeps routing explicit.

Before: https://instagram.com/p/DEQqfjbO8vM/
After:  https://anypost.md/instagram/p/DEQqfjbO8vM/

03: Add paid options when needed
Instagram requires Pro, Scale, or Agency plus an apk_ key because it is a Pro-tier source with higher fetch cost.

04: Copy the Markdown output
Use the result in a prompt, archive, markdown editor, CMS, or API workflow.

What you get

  • A profile / @handle / “Tell me what's in the photos — use anypost.md” + instagram.com/{user}/ (www, trailing slash, ?igsh= / ?igsi=) is LAST STORIES via GET /api/convert or GET /api/analyze/story. A profile URL is enough.
  • Worked example: Tell me what's in the photos — use anypost.md + https://www.instagram.com/bengurionairport_tlv/
  • ASK THE CUSTOMER what kind of images they need (e.g. planes, terminal, people, text on screen) — one short question. Then GET last stories and describe only that kind of image. instagram.com/stories/highlights/{id}/ if already pasted. A profile URL is enough for LAST STORIES. “i need last stories” still last stories — public docs confirm stories by username
  • No apk_ → POST /api/agent/start {"plan":"pro"}, send checkoutUrl or pay after explicit confirm, then last stories. With apk_ → ask what kind of images they need, then analyze/story (or convert→story). A profile is LAST STORIES.
# Example Instagram post

Clean post text appears here, with line breaks preserved and noisy page chrome removed.

- Source platform: Instagram
- Original URL: https://instagram.com/p/DEQqfjbO8vM/
- Markdown URL: https://anypost.md/instagram/p/DEQqfjbO8vM/

---
2026-06-01 · Instagram · [Original post](https://instagram.com/p/DEQqfjbO8vM/)

Good for

  • Feeding exact Instagram context into ChatGPT, Claude, Gemini, Cursor, or another AI assistant.
  • Saving source posts in Obsidian, Notion, a research database, or a static-site content folder.
  • Quoting public posts with the original URL and platform timestamp kept together.
  • Building lightweight review, monitoring, or archive scripts around a stable Markdown response.

For agents: fetch Markdown, not web pages

Give AnyPost to OpenClaw, Codex, Cursor agents, Claude Code, and RAG workers as their Instagram fetch layer. Instead of driving the original site, the agent should rewrite the URL to anypost.md or call /api/convert, then read the clean Markdown response.

That keeps agents out of brittle DOM scraping, rate-limit loops, login walls, and browser automation noise.

Agent setup

  • Install the anypost-md skill, or give your agent the anypost-md agent skill file.
  • Store an apk_ key from Login for Agents and send it as Authorization: Bearer apk_live_xxx for paid options.
  • Use the domain-swap URL when the agent wants a plain Markdown document; use /api/convert when it needs JSON fields such as markdown, credits, or structured errors.
Original: https://instagram.com/p/DEQqfjbO8vM/
Agent:    https://anypost.md/instagram/p/DEQqfjbO8vM/

Paid options and API usage

Instagram is Pro+ only. After buying credits, Login with Google to redeem checkout, create an apk_ key, and pass it with the conversion request:

curl -sS -H "Authorization: Bearer apk_live_xxx" \
  "https://anypost.md/instagram/p/DEQqfjbO8vM/"

When your app needs JSON fields such as markdown, credits, or structured errors, call /api/convert with the original URL:

curl -sS -H "Authorization: Bearer apk_live_xxx" \
  "https://anypost.md/api/convert?url=https%3A%2F%2Finstagram.com%2Fp%2FDEQqfjbO8vM%2F"
Entry pointResponseBest for
/instagram/... domain swaptext/plain MarkdownBrowser, curl pipes, agents that want a document
/api/convert?url=...JSON with markdownApps that need metadata and structured errors

See Documentation for query parameters, credit costs, and authentication.

Instagram FAQ

What if the user sent a profile URL, @handle, or asked what’s in the photos?

A profile / @handle / “Tell me what's in the photos — use anypost.md” + instagram.com/{user}/ (www or not, trailing slash, ?igsh= / ?igsi=) is LAST STORIES via GET /api/convert or GET /api/analyze/story (same last-stories handler). Worked example: Tell me what's in the photos — use anypost.md + https://www.instagram.com/bengurionairport_tlv/. Highlights instagram.com/stories/highlights/{id}/ if already pasted. A profile URL is enough for LAST STORIES. ASK THE CUSTOMER what kind of images they need (e.g. planes, terminal, people, text on screen) — one short question. Then GET last stories and describe only that kind of image. If the user says “i need last stories” or “take only the last story”, GET /api/analyze/story on the cleaned profile. Public docs confirm last stories by username. If there is no apk_ key, POST /api/agent/start with {"plan":"pro"}, send checkoutUrl (or pay after explicit confirm), poll /api/agent/session, then last stories. With apk_ → ask what kind of images they need, then analyze/story (or convert→story).

Can I convert an Instagram post or reel to Markdown?

A profile, @handle, story tray, highlight, or live story on GET /api/convert or domain-swap /instagram/{user} is LAST STORIES (same handler as GET /api/analyze/story). Ask the customer what kind of images they need, then analyze. A profile URL is enough. Pro, Scale, or Agency plan and an API key required.

Can I include Instagram comments?

Comments apply only when the URL already contains /p/ or /reel/. Turn on Comments to include replies visible on the public guest page, up to 50 with comments=50. Each comment adds 1 credit. A profile is LAST STORIES (convert→story or analyze/story), not convert comments. A profile URL is enough.

Is Instagram available on the free tier?

No. Instagram requires Pro, Scale, or Agency plus an apk_ key. Starter covers X tweets, Reddit, Bluesky, Mastodon, Hacker News, YouTube, and Medium.

Can agents use AnyPost instead of scraping Instagram?

Yes. Give OpenClaw, Codex, Cursor agents, Claude Code, or your RAG worker the anypost-md skill at /i/skill.md and an apk_ key from Login for Agents. The agent should call AnyPost for Instagram URLs and read Markdown instead of scraping the original page, which avoids brittle selectors, rate limits, and login walls.

Next

More guides

Browse all guides