# Company Social Links Finder: LinkedIn, X, Facebook & More (`redfoxscout/company-social-links`) Actor

Find each company's official social profiles (LinkedIn company page, X/Twitter, Facebook, Instagram, YouTube, TikTok, GitHub and more) plus its contact, careers, about and pricing pages from a list of websites. Company accounts only; no personal data.

- **URL**: https://apify.com/redfoxscout/company-social-links.md
- **Developed by:** [Red Fox Scout](https://apify.com/redfoxscout) (community)
- **Categories:** Lead generation, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 websites

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

Give it a list of company websites and get each company's **official social media profiles on 17 networks**: LinkedIn, X, Facebook, Instagram, YouTube, TikTok, Pinterest, Threads, WhatsApp, Telegram, Discord, Reddit, Medium, Snapchat, Spotify, Twitch and GitHub. It reads the links on the page and the company's **schema.org `sameAs` profiles**, so profiles listed only in structured data are found too. Optionally it also checks the **contact and about pages**, plus the company's contact, careers, about, pricing and blog pages, its name and favicon. Clean columns, ready for a CRM or spreadsheet. For sales and marketing teams enriching lead lists, and for AI agents.

**Price: $2.00 per 1,000 websites.** Sites that fail to load or block the visit are free. Apify's free plan ($5 monthly credit) covers about 2,500 websites a month.

[![Social media profiles for a list of companies: real output preview (Company websites in, official profiles on 17 networks out)](https://raw.githubusercontent.com/TikTop-Data/apify-store-assets/main/images/company-social-links-output.png)](https://console.apify.com/actors/OmewIiNYR0fNdmX9B)

### Questions it answers

- What is this company's LinkedIn company page?
- Which of these companies are on TikTok, Pinterest, WhatsApp or Telegram?
- Which of these companies are on X, Instagram or YouTube?
- Where is each company's contact page or careers page?

### Who uses this

- 💼 **Sales and marketing teams:** enrich account lists with official social profiles and key page links.
- 🏢 **Agencies:** audit clients' and competitors' social presence in bulk.
- 🔬 **Researchers and analysts:** map which companies are active on which networks.

### Why this Company Social Links Finder

- 🌐 **17 networks** in their own columns, plus every profile found in one object.
- 🧩 **Structured data too:** schema.org sameAs profiles that are not linked on the page.
- 🏷️ **Start from company names:** no website list needed; each name is matched to its official site.
- 📄 **Contact and about pages** checked on request, plus careers, pricing and blog page links.
- 🔔 **Change alerts** when a company's profiles change.
- 💰 **$2 per 1,000 websites**, sites that fail to load are free.

### How to use the Company Social Links Finder

1. Click **Try for free** (a free Apify account is enough).
2. Paste company websites or domains, one per line, or pick a dataset from another Actor (see below).
3. Click **Start**. Each site takes a second or two.
4. Download the results as JSON, CSV or Excel, or send them to Google Sheets or your CRM through the API.

### Input

| Field | Default | What it does |
|---|---|---|
| `urls` | – | Company websites or domains, one per line. The homepage is read. |
| `startUrls` | – | The same list in Apify's standard start-URL format (handy when another tool passes `startUrls`). |
| `datasetId` | – | Read websites from another Actor's dataset, e.g. Google Maps results. |
| `datasetUrlField` | `website` | The dataset field that holds the website. |
| `maxDatasetItems` | 10000 | Read at most this many rows from that dataset. |
| `monitorName` | – | Name the list to compare each run with the previous run of the same name. |
| `onlyChanges` | `false` | Output only sites that changed (needs a monitor name). |
| `maxPagesPerSite` | 0 | Also check up to 3 linked contact and about pages per site (0 = homepage only). |
| `maxConcurrency` | 20 | Sites checked in parallel. |
| `requestTimeoutSecs` | 30 | Give up on a site after this long. |
| `proxyConfiguration` | off | Use your own proxy group if some sites block or rate-limit the checks. |

Example:

```json
{ "urls": ["hubspot.com", "shopify.com", "slack.com"] }
```

### Output

One row per website. A real row for hubspot.com from the example input above, shortened:

```json
{
  "inputUrl": "hubspot.com",
  "url": "https://www.hubspot.com/",
  "domain": "hubspot.com",
  "httpStatus": 200,
  "companyName": null,
  "socialProfiles": {
    "facebook": "https://www.facebook.com/hubspot",
    "instagram": "https://www.instagram.com/hubspot",
    "youtube": "https://youtube.com/user/HubSpot",
    "x": "https://x.com/HubSpot",
    "linkedin": "https://www.linkedin.com/company/hubspot",
    "reddit": "https://www.reddit.com/r/hubspot",
    "tiktok": "https://www.tiktok.com/@hubspot"
  },
  "socialCount": 7,
  "linkedin": "https://www.linkedin.com/company/hubspot",
  "x": "https://x.com/HubSpot",
  "facebook": "https://www.facebook.com/hubspot",
  "instagram": "https://www.instagram.com/hubspot",
  "youtube": "https://youtube.com/user/HubSpot",
  "tiktok": "https://www.tiktok.com/@hubspot",
  "github": null,
  "pinterest": null,
  "threads": null,
  "whatsapp": null,
  "telegram": null,
  "discord": null,
  "reddit": "https://www.reddit.com/r/hubspot",
  "medium": null,
  "snapchat": null,
  "spotify": null,
  "twitch": null,
  "contactPageUrl": "https://offers.hubspot.com/contact-sales",
  "careersPageUrl": "https://www.hubspot.com/careers",
  "aboutPageUrl": "https://www.hubspot.com/our-story",
  "pricingPageUrl": "https://www.hubspot.com/products/marketing",
  "blogUrl": null,
  "ogImage": "https://www.hubspot.com/hubfs/assets/hubspot.com/homepage/hero-backgrounds-2025/HS_Full_Bleed_1.jpg",
  "pagesChecked": 1,
  "error": null,
  "checkedAt": "2026-10-08T12:51:47.580Z"
}
```

`socialProfiles` holds every network found; the most common ones also get their own column for easy spreadsheets. `pagesChecked` is 1 unless contact and about pages are checked.

### Example tasks

Ready-made inputs you can open, change and run:

- [Social media profiles for a list of companies](https://apify.com/redfoxscout/company-social-links/examples/social-media-profiles-for-companies)
- [Find the LinkedIn company page of any website](https://apify.com/redfoxscout/company-social-links/examples/linkedin-company-page-finder)
- [Find contact and careers pages for a list of companies](https://apify.com/redfoxscout/company-social-links/examples/contact-and-careers-page-finder)

### 17 networks, from links and structured data

- Every profile link on the homepage is checked against the 17 networks, and the JSON-LD `sameAs` list that many sites publish for search engines is read too. A profile linked on the page wins over one listed in `sameAs`.
- Only company accounts count: LinkedIn `/in/` profiles, share and intent buttons, WhatsApp group invites, Facebook people pages, Reddit user pages, Medium tag pages and Spotify user profiles are skipped.
- WhatsApp links come back as `https://wa.me/<number>`, whether the site used `wa.me` or `api.whatsapp.com/send?phone=`.

### Contact and about pages (optional)

Set **Contact and about pages** to 1-3 to also read the contact and about pages linked from the homepage. Many sites list their profiles only in the footer of those pages. Profiles found on the homepage are kept; the other pages only fill in what the homepage did not show. Each extra page costs one more request per site, and `pagesChecked` tells you how many pages were read.

### What it does not collect

Company accounts and company pages only. It skips personal profiles (such as LinkedIn `/in/` links) and never extracts email addresses or phone numbers. It does not log in to any site, and it does not look up a company's website from its name: give it websites or domains.

### Start from company names

No website list? Put company names in **Company names** (`companyNames`), e.g. `["Stripe", "Lulu Hypermarket"]`. Each name is matched to its official website first (public company autocomplete, best match), then checked like any other site; `inputUrl` keeps the name you gave. A name without a match comes back as a free error row. Check the `domain` column: for very common names the best match may be a different company.

### Check websites from another Actor (Google Maps leads, lead lists)

Have a list from Google Maps Scraper or any other Actor? Pick its dataset under **Websites from another Actor**. This Actor reads the `website` field (or the field you name, e.g. `url`, `domain` or `contact.website`) and checks every site. No copy and paste.

To run it automatically after every scrape, add an Actor-to-Actor integration to the source Actor or task with this input:

```json
{ "datasetId": "{{resource.defaultDatasetId}}", "datasetUrlField": "website" }
```

### Change alerts

Give the run a **Change alert name** (e.g. `clients-weekly`) and put it on an Apify schedule. Each row then gets `changeStatus` (`new`, `changed` or `unchanged`) and `changedFields`, compared with the previous run of the same name, so you see when a company changes its social profiles, contact or careers page. Turn on **Only new and changed sites** and each run's dataset is just the change report; unchanged sites are still checked and charged as usual. Add Apify's Slack or email integration to get the report delivered.

### Notes

- Reads the HTML the server returns. Links added only by JavaScript won't be found; most sites put social links in the static footer or in `sameAs` data.
- Share buttons and intent links are ignored; only profile links count.

### How much does it cost?

- **Site checked:** $0.002 per website that loads ($2.00 per 1,000).
- **Actor start:** $0.00005 per GB of memory (default 1 GB = $0.00005 per run).
- Sites that fail to load or block the visit: free.

| Websites | Cost |
|---|---|
| 100 | about $0.20 |
| 1,000 | about $2 |
| 10,000 | about $20 |

Apify's free plan includes $5 of credit every month, enough for about 2,500 websites. Paid Apify plans get Store discounts of up to 25%. You can set a maximum cost per run; the Actor stops cleanly when it's reached.

### FAQ

**Is this legal?** It reads each company's public website, like a browser, and keeps only links to company accounts and company pages. No personal profiles, emails or phone numbers.

**Why are some profiles missing?** The site probably adds them with JavaScript, or doesn't link them from the homepage. Turn on **Contact and about pages** or try the company's contact page URL instead.

**Can I run it on a schedule or through the API?** Yes. Use Apify schedules, the API, or integrations (Zapier, Make, Google Sheets, webhooks).

### Related Actors

- [Website Contact Extractor](https://apify.com/redfoxscout/website-contact-extractor): emails (checked for mail servers), phone numbers and socials from the same websites.
- [Website Tech Stack Detector](https://apify.com/redfoxscout/tech-stack-detector): what the company's site is built with.
- [ATS Jobs Scraper](https://apify.com/redfoxscout/ats-jobs-scraper): the company's open jobs.
- [SEO Meta Tag & Schema Checker](https://apify.com/redfoxscout/seo-meta-checker): titles, meta tags and Open Graph for the same sites.

# Actor input Schema

## `urls` (type: `array`):

Company websites or domains, one per line. Or use "Websites from another Actor" below.

## `startUrls` (type: `array`):

Same as the list above, in Apify's standard start-URL format (handy when another tool or Actor passes startUrls).

## `companyNames` (type: `array`):

No website list? Give company names (e.g. Stripe, Lulu Hypermarket): each is matched to its official website first, then checked. Names without a match come back as free error rows.

## `datasetId` (type: `string`):

Check the websites in another Actor run's results, e.g. Google Maps Scraper or any lead list. Pick the dataset here, or in an Actor-to-Actor integration set it to {{resource.defaultDatasetId}}. Its websites are added to the list above.

## `datasetUrlField` (type: `string`):

The dataset field that holds the website or URL, e.g. website (Google Maps Scraper), url or domain. Dot paths like contact.website work. If it is empty, website, url and domain are tried.

## `maxDatasetItems` (type: `integer`):

Read at most this many rows from that dataset.

## `monitorName` (type: `string`):

Name this list (e.g. "clients-weekly") to compare each run with the previous run of the same name. Every row then gets changeStatus (new, changed or unchanged) and changedFields. Best on an Apify schedule.

## `onlyChanges` (type: `boolean`):

Needs a change alert name. Unchanged sites are still checked and charged as usual, but left out of the results, so each run's dataset is your change report.

## `maxPagesPerSite` (type: `integer`):

Besides the home page, how many linked contact and about pages to check for profiles (many sites list them only in the footer there). 0 = home page only.

## `maxConcurrency` (type: `integer`):

How many sites to check at once.

## `requestTimeoutSecs` (type: `integer`):

Give up on a site after this long.

## `proxyConfiguration` (type: `object`):

Off by default. Turn on if some sites block or rate-limit the checks.

## Actor input object example

```json
{
  "urls": [
    "hubspot.com",
    "shopify.com",
    "slack.com"
  ],
  "datasetUrlField": "website",
  "maxDatasetItems": 10000,
  "onlyChanges": false,
  "maxPagesPerSite": 0,
  "maxConcurrency": 20,
  "requestTimeoutSecs": 30,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "hubspot.com",
        "shopify.com",
        "slack.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("redfoxscout/company-social-links").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "urls": [
        "hubspot.com",
        "shopify.com",
        "slack.com",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("redfoxscout/company-social-links").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "hubspot.com",
    "shopify.com",
    "slack.com"
  ]
}' |
apify call redfoxscout/company-social-links --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,redfoxscout/company-social-links"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/OmewIiNYR0fNdmX9B/builds/oPBZg2du8tKo9YYvc/openapi.json
