# Affiliate Program Finder & Commission Checker (`monkey.d.scraping/affiliate-program-finder`) Actor

Find affiliate programs for your target websites. Export published commission terms, cookie duration, referral networks, application links and supporting evidence. No login or AI required.

- **URL**: https://apify.com/monkey.d.scraping/affiliate-program-finder.md
- **Developed by:** [Monkey D. Scraping](https://apify.com/monkey.d.scraping) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $15.00 / 1,000 website analyzeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Affiliate Program Finder & Commission Checker

**Turn a list of company websites into an affiliate program research dataset.** Find published commission terms, recurring rewards, cookie duration, affiliate networks, application links and supporting evidence in one export.

Built for affiliate marketers, publishers, creators, partnership teams and agencies that already know which brands they want to research. No website account, external API key or AI subscription required. The Actor never uses AI.

### What can I do with this affiliate program finder?

- **Build an affiliate program database:** enrich your shortlist of SaaS, ecommerce and service websites with program information.
- **Compare published affiliate commissions:** review percentage and fixed rewards alongside the original wording and applicable qualifiers.
- **Research recurring commission programs:** identify published recurring rewards for subscription and software offers.
- **Check affiliate cookie duration:** compare available attribution windows before selecting brands for a campaign.
- **Find affiliate application links:** prepare a shortlist for manual application without visiting every website yourself.
- **Research affiliate networks:** see the networks associated with programs in your target list.
- **Refresh a partnership CRM:** revisit your prospect list regularly and update supporting URLs and observation dates.
- **Support publisher monetization audits:** research the brands mentioned in your existing content and identify potential commercial relationships.

### Quick start

1. Paste company websites or known affiliate program URLs into **Websites to check**.
2. Start the Actor.
3. Review the **Overview**, **Evidence** and **Coverage** dataset views.
4. Export JSON, CSV or Excel, or pass the results into your automation workflow.

```json
{
  "websites": [
    "https://www.hubspot.com/partners/affiliates",
    "https://www.semrush.com/"
  ]
}
```

You can enter bare domains such as `semrush.com`. Supply between 1 and 1,000 websites per run. Duplicate normalized URLs are checked once. For larger lists, split your websites into multiple runs. Each distinct starting URL produces one record; providing both a homepage and a program URL can therefore produce two records for the same company.

### What data do I get?

| Data | Useful fields |
|---|---|
| Website identity | `recordId`, `inputUrl`, `websiteUrl`, `domain`, `companyName` |
| Research outcome | `status`, `hasProgram`, `programCount`, `warnings`, `errorCode` |
| Program details | `programType`, `programTitle`, `programUrl`, `programAvailability` |
| Commission terms | `commissionTerms`, `commissionText`, `recurringCommission` |
| Attribution | `cookieDays`, `cookieEvidence` |
| Applications and networks | `applicationUrls`, `networks` |
| Verification | `evidence`, `checkedAt`, `language`, `coverage` |
| Additional programs | `programs` |

Top-level program fields describe one program. When several programs are found, `programs` retains their separate terms and evidence. This avoids treating different offers as a single agreement.

#### Example output

Illustrative output excerpt, not a promise of any brand's current terms:

```json
{
  "domain": "example.com",
  "status": "found",
  "hasProgram": true,
  "programCount": 1,
  "programType": "affiliate",
  "programUrl": "https://example.com/affiliates",
  "commissionTerms": [
    {
      "type": "percentage",
      "value": 30,
      "currency": null,
      "currencySymbol": null,
      "qualifier": "up_to",
      "evidence": "Earn up to 30% recurring commission for every referral.",
      "sourceUrl": "https://example.com/affiliates"
    }
  ],
  "recurringCommission": true,
  "cookieDays": 90,
  "cookieEvidence": "We use a 90-day tracking cookie.",
  "programAvailability": "not_confirmed",
  "networks": ["PartnerStack"],
  "applicationUrls": ["https://example.partnerstack.com/"],
  "coverage": "limited",
  "warnings": []
}
```

#### Understand the result status

| Status | Meaning |
|---|---|
| `found` | A relevant program was identified. Review its evidence and any coverage warnings. |
| `not_found` | No qualifying program was found in this check. This does **not** prove that the company has no program. |
| `inconclusive` | Available information was insufficient for a dependable conclusion. |
| `error` | The website could not be checked successfully. |

`null` means unavailable or unconfirmed, not zero. A dollar symbol alone does not establish which dollar currency applies. A published maximum is labeled `up_to`; it is not a guaranteed payout. Commission observations can refer to different tiers or qualifying actions—read the accompanying evidence before comparing them.

### Practical workflows

#### SaaS affiliate research

Add the software vendors you cover in a newsletter or comparison site. Review `recurringCommission`, `commissionTerms` and `cookieDays` to build a candidate list for your monetization plan.

#### Ecommerce creator partnerships

Check the brands in your content calendar. Review affiliate and ambassador programs, then use `applicationUrls` to apply yourself. This Actor does not submit applications or contact companies.

#### Affiliate agency prospect qualification

Enrich a client-provided brand list with program URLs and networks. Route confirmed findings to a partnership CRM and send inconclusive results for manual review.

#### Competitor program benchmarking

Run the same company list on a schedule. Keep each run's dataset in your database and compare `recordId`, terms and timestamps. Change detection and notifications can be configured in your integration workflow.

### Integrate with n8n, Make, Zapier and Google Sheets

- **n8n:** trigger the Actor, wait for completion, read the dataset and route records by `status`.
- **Make:** send your brand list to Apify and append completed results to Google Sheets or a CRM.
- **Zapier:** connect a completed Apify run to your reporting or review workflow.
- **Google Sheets / Excel:** use the Overview export for shortlists; retain JSON for nested terms and evidence.
- **API and data pipelines:** start a run through Apify and retrieve its default dataset after completion. Use `recordId` as an input-specific key across repeated runs.

The Actor's input and output are structured for automation tools and assistants. Its execution does not use generative AI, models or paid enrichment services.

### Pricing

Consult the **Pricing** tab for the active rate. When pay-per-event pricing is enabled, a website analysis is charged for `found` and `not_found` results. Inconclusive checks and website errors do not incur the website-analysis charge. Any Actor-start fee is listed separately. Your Apify run spending limit is respected.

### Frequently asked questions

**Can I search by niche keyword?**
Supply websites you want to research. This Actor is intended for brand-list enrichment. You can use the website column from an existing prospecting dataset as input.

**Does it support every website and language?**
English-language program descriptions are the supported use case. Websites worldwide can be supplied, but access restrictions, limited visible content and other languages may reduce coverage. Results explicitly report these limitations. Program conditions hidden behind login are unavailable.

**Does “found” mean applications are open?**
No. `programAvailability` is `not_confirmed` unless a closure is explicitly observed, in which case it is `closed`. Finding a program or application URL does not guarantee acceptance.

**Are all commission values comparable?**
No. Programs can advertise tiered rewards, trial bonuses and recurring commissions with different conditions. The evidence belongs with the numeric value. Always confirm the current agreement before applying or promoting an offer.

**Can I schedule regular checks?**
Yes. Save an Apify task and schedule recurring runs. Each run delivers a fresh dataset. Retain historical datasets in your own workflow to compare changes.

**Where do I find run details?**
The output includes a run-summary link. Use the Coverage view to identify records that need another check. Contact the developer through the Actor's Issues tab with a run ID and a short description of the problem.

# Actor input Schema

## `websites` (type: `array`):

Enter 1–1000 company websites or affiliate program URLs. You can paste domains such as semrush.com. Duplicate URLs are checked once.

## Actor input object example

```json
{
  "websites": [
    "https://www.hubspot.com/partners/affiliates",
    "https://www.semrush.com/"
  ]
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `summary` (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 = {
    "websites": [
        "https://www.hubspot.com/partners/affiliates",
        "https://www.semrush.com/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("monkey.d.scraping/affiliate-program-finder").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 = { "websites": [
        "https://www.hubspot.com/partners/affiliates",
        "https://www.semrush.com/",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("monkey.d.scraping/affiliate-program-finder").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 '{
  "websites": [
    "https://www.hubspot.com/partners/affiliates",
    "https://www.semrush.com/"
  ]
}' |
apify call monkey.d.scraping/affiliate-program-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,monkey.d.scraping/affiliate-program-finder"
        }
    }
}

```

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/o7kWk4i0qAPBuSe7W/builds/rYSXTjvSNLIPbOu4L/openapi.json
