Back to Blog
General

Instagram Highlights API: Extract Story Highlights & Content

February 6, 2026
4 min read
S
By SociaVault Team
instagramhighlightsstoriesapi

Instagram Highlights API: Extract Story Highlight Content

Instagram Stories disappear after 24 hours, but Highlights persist forever. This guide shows you how to extract highlight data from any public Instagram profile.

What Are Instagram Highlights?

Highlights are curated collections of Stories that creators save to their profile. They typically contain:

  • Product showcases
  • FAQs and tutorials
  • Behind-the-scenes content
  • User testimonials
  • Event coverage

Highlights API Endpoints

SociaVault offers two endpoints for highlights:

EndpointDescription
HighlightsGet all highlights from a profile
Highlight DetailGet stories within a highlight

Get Profile Highlights

List all highlights from an Instagram profile:

const response = await fetch(
  'https://api.sociavault.com/v1/scrape/instagram/highlights?handle=jane',
  {
    method: 'GET',
    headers: {
      'x-api-key': 'YOUR_API_KEY'
    }
  }
);

const result = await response.json();
const highlights = Object.values(result.data.highlights);

You can also use user_id instead of handle for faster response times.

Response

{
  "success": true,
  "data": {
    "success": true,
    "highlights": {
      "0": {
        "__typename": "GraphHighlightReel",
        "id": "18154582366360931",
        "title": "BOB hairstyles💇‍♀️",
        "cover_media": {
          "thumbnail_src": "https://scontent..."
        },
        "cover_media_cropped_thumbnail": {
          "url": "https://scontent..."
        },
        "owner": {
          "__typename": "GraphUser",
          "id": "21393171",
          "username": "jane"
        }
      }
    }
  },
  "credits_used": 1,
  "endpoint": "instagram/highlights"
}

Key fields per highlight:

  • Title: title
  • ID: id (use this with the detail endpoint)
  • Cover image: cover_media_cropped_thumbnail.url
  • Owner: owner.username

Get Highlight Details

Extract the stories within a specific highlight:

const response = await fetch(
  'https://api.sociavault.com/v1/scrape/instagram/highlight-detail?id=18154582366360931',
  {
    method: 'GET',
    headers: {
      'x-api-key': 'YOUR_API_KEY'
    }
  }
);

const result = await response.json();
const stories = Object.values(result.data.items);

Response

{
  "success": true,
  "data": {
    "success": true,
    "id": "highlight:18067016518767507",
    "reel_type": "highlight_reel",
    "user": {
      "pk": "21393171",
      "username": "jane",
      "full_name": "Jane Williamson",
      "is_verified": true
    },
    "items": {
      "0": {
        "pk": "3573813516152622297",
        "id": "3573813516152622297_21393171",
        "code": "DGYvHVDxEzZ",
        "media_type": 2,
        "taken_at": 1740251781,
        "video_duration": 47.883,
        "has_audio": true,
        "video_versions": {
          "0": { "url": "https://scontent...", "width": 480, "height": 852 }
        },
        "image_versions2": {
          "candidates": {
            "0": { "url": "https://scontent...", "width": 640, "height": 1136 }
          }
        }
      }
    }
  },
  "credits_used": 1,
  "endpoint": "instagram/highlight-detail"
}

Key fields per story item:

  • Video URL: video_versions[0].url
  • Thumbnail: image_versions2.candidates[0].url
  • Media type: media_type (2 = video)
  • Duration: video_duration (seconds)
  • Timestamp: taken_at (Unix timestamp)
  • Shortcode: code

Use Cases

Content Archival

Save competitor highlight content for analysis:

async function getHighlights(handle) {
  const res = await fetch(
    `https://api.sociavault.com/v1/scrape/instagram/highlights?handle=${handle}`,
    { headers: { 'x-api-key': 'YOUR_API_KEY' } }
  );
  return res.json();
}

async function getHighlightDetail(id) {
  const res = await fetch(
    `https://api.sociavault.com/v1/scrape/instagram/highlight-detail?id=${id}`,
    { headers: { 'x-api-key': 'YOUR_API_KEY' } }
  );
  return res.json();
}

async function archiveHighlights(handle) {
  const result = await getHighlights(handle);
  const highlights = Object.values(result.data.highlights);
  
  for (const highlight of highlights) {
    const detail = await getHighlightDetail(highlight.id);
    const stories = Object.values(detail.data.items);
    
    for (const story of stories) {
      const videoUrl = story.video_versions?.[0]?.url;
      if (videoUrl) {
        await downloadMedia(videoUrl, `${handle}_${highlight.title}_${story.pk}`);
      }
    }
  }
}

Competitive Analysis

Compare highlight strategies across competitors:

async function analyzeHighlights(handles) {
  const analysis = {};
  
  for (const handle of handles) {
    const result = await getHighlights(handle);
    const highlights = Object.values(result.data.highlights);
    
    analysis[handle] = {
      totalHighlights: highlights.length,
      categories: highlights.map(h => h.title)
    };
  }
  
  return analysis;
}

Extract FAQ Content

Many brands use highlights for FAQs:

async function extractFAQs(handle) {
  const result = await getHighlights(handle);
  const highlights = Object.values(result.data.highlights);
  
  const faqHighlight = highlights.find(h => 
    h.title.toLowerCase().includes('faq') ||
    h.title.toLowerCase().includes('questions')
  );
  
  if (faqHighlight) {
    const detail = await getHighlightDetail(faqHighlight.id);
    return Object.values(detail.data.items);
  }
  
  return null;
}

Frequently Asked Questions

Can I get current Stories (not Highlights)?

No, current Stories are only available for 24 hours and require different access. The API focuses on permanent Highlights.

Are Story Highlights public?

Highlights follow the account's privacy setting. Public accounts have public highlights; private accounts restrict access.

Can I download the images and videos?

Yes, the API returns direct media URLs that you can download for archival purposes.

How many stories can be in a Highlight?

Instagram allows up to 100 stories per Highlight. The API retrieves all available stories.

Do I get viewer analytics for Highlights?

No, view counts are only available to the account owner. The API extracts the content itself.

Get Started

Sign up free and start extracting Instagram Highlights.

Documentation: /docs/api-reference/instagram/highlights

Found this helpful?

Share it with others who might benefit

Ready to Try SociaVault?

Start extracting social media data with our powerful API. No credit card required.