Developing chrome extensions for Instagram and linkedin: internal APIs, manifest V3, and store approval
Back to blog

Developing chrome extensions for Instagram and linkedin: internal APIs, manifest V3, and store approval

6/7/2026 · 3 min · Infrastructure

Developing Chrome Extensions for Instagram and LinkedIn: Internal APIs, Manifest V3, and Store Approval#

I've been working in IT for over 10 years (currently as an N2 Analyst focused on infra and cybersecurity), and recently I dove into a great challenge: developing Chrome extensions using Vibecode and internal API mapping.

Many people think creating an extension is just throwing some HTML into a popup, but when you deal with Instagram and LinkedIn (which are true "fortresses"), it's much deeper. I'm going to share with you what I learned on this journey of approval, code errors, and surviving Manifest V3.

The strategy: mapping internal APIs#

The goal was to create two tools: one to list who doesn't follow you back on Instagram and another to manage contacts on LinkedIn by affinity (headline tags), with CSV/JSON export.

The first big lesson: don't use public APIs if they don't exist or are limited. I mapped the internal calls that the browser itself makes. It's pure "reverse engineering." If you intercept the traffic, understand the JSON that comes back, and replicate that in your tool, you gain immense power.

The rate limiting trap#

At first, I wanted the extension to read everything at once. Fatal mistake. Instagram and LinkedIn detect repetition patterns. If you make 50 requests in 2 seconds, your account will go into "limbo."

The Solution: Implementing what I call a Human-like delay.

"It's no use being fast if you get banned. The secret is to simulate human slowness."

Surviving manifest V3#

If you're starting now, forget Manifest V2. Google killed it. Everything is now V3, which means we can no longer load remote code (goodbye, external CDNs), and everything must be declared in manifest.json.

Here's a generic example of how I structured the permissions to pass Google's manual review:

{
  "manifest_version": 3,
  "name": "Social Network Manager - Export & Stats",
  "version": "1.0.0",
  "permissions": ["storage", "downloads", "scripting"],
  "host_permissions": [
"https://*.instagram.com/*",
"https://*.linkedin.com/*"
  ],
  "action": {
"default_popup": "popup.html"
  },
  "background": {
"service_worker": "background.js"
  }
}

One error I had was trying to trigger the download directly from the Service Worker. In V3, it doesn't have DOM access. I had to use an offscreen document or handle the Blob creation logic directly in popup.js:

// Example of how I generated CSV locally without an external server
const exportToCSV = (data) => {
  const csvContent = "data:text/csv;charset=utf-8," 
+ data.map(e => `${e.name},${e.headline}`).join("\n");
  const encodedUri = encodeURI(csvContent);
  const link = document.createElement("a");
  link.setAttribute("href", encodedUri);
  link.setAttribute("download", "my_leads.csv");
  document.body.appendChild(link);
  link.click();
};

How to get approved on the web store#

If you submit an extension that says "LinkedIn Automation," you'll be rejected within 24 hours. Google hates the term "automation" for social networks.

What I did to pass:

  1. Reframing: Market the tool as "Productivity" or "Personal Data Management."
  2. Privacy First: In the review form, I made it clear: "The extension does not send data to external servers. Processing is 100% local." This reduces the security risk significantly.
  3. Demo Video: I recorded a video showing the tool working. This prevents the reviewer from thinking your code is hidden malware.

Why bother with the store?#

Many people ask: "Why bother getting approved on the store if I can use it in developer mode?". Because the authority gain is immense.

Developing extensions in 2026 requires patience with APIs and respect for rate limiting. If you are ethical, keep the data local, and know how to "talk" to internal APIs, the possibilities for creating useful tools are endless.

Was this article helpful?

Leave a quick reaction to help prioritize future technical guides:

CC BY-NC

This post is licensed under CC BY-NC.

Comments

Join the discussion below.

0 comments