# ASC Certified Farms Scraper (`aboo.script/asc-aqua-org-scraper`) Actor

Fast ASC farm scraper. No login needed. Collect farm sites by URL or company name with species, countries, certification status, expiry dates, coordinates, certificates and audit records. Filter farms for seafood sourcing and certification research.

- **URL**: https://apify.com/aboo.script/asc-aqua-org-scraper.md
- **Developed by:** [Aboo Script](https://apify.com/aboo.script) (community)
- **Stats:** 2 total users, 1 monthly users, 33.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.10 / 1,000 results

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

## ASC Certified Farms Scraper

![ASC Certified Farms Scraper](https://i.ibb.co/0RW5zzPP/asc-aqua-org-banner.png)

**ASC Certified Farms Scraper** collects farm sites and certification records from [ASC](https://asc-aqua.org/). Start with a directory or certificate URL, or search by company or farm name, and export species, locations, certification dates and audit records as JSON, CSV, Excel or HTML. No login needed.

### Introduction

The Aquaculture Stewardship Council maintains standards and certification information for responsible seafood farming. Its public farm directory helps seafood buyers and researchers identify farms, their species and their current certification status.

This actor turns that public information into structured farm site records for sourcing research, certification checks and scheduled data collection.

### What data can you extract from ASC?

- Farm site name and ID, company, certificate number and public certificate page.
- Site and certificate status, standard, certification type and validity dates.
- Country, country code, latitude and longitude.
- Species with scientific name, English name and FAO code.
- Unit of certification ID and name, certification body and published contact email.
- Production system, RAS module and public consultation date where available.
- Certificate documents, certification history, audits, audit teams and document links.

### Use Cases

- **Seafood sourcing**: find farm sites by country, species and certification status.
- **Certification research**: review validity periods, certification history and audit documents.
- **Market analysis**: compare the geographical distribution of aquaculture species and standards.
- **Automation**: collect fresh snapshots for spreadsheets and procurement workflows.

### How to scrape ASC step by step

1. Enter a Find a Farm directory or certificate URL in **Start URLs**, or company/farm names in **Search queries**.
2. Set **Maximum number of results** per URL or query.
3. Add optional filters when using search queries. Use `*` as a query to search all farm sites.
4. Click **Start**, then download the dataset from the **Output** tab.

### Input

- **Start URLs**: supports `https://asc-aqua.org/find-a-farm/` and certificate pages such as `https://asc-aqua.org/find-a-farm/ASC01371/`.
- **Search queries**: case-insensitive name fragments matching the company, unit of certification or farm site. `*` matches all names. Each query has its own limit.
- **Maximum number of results**: defaults to 5 per URL or query. Use 0 for all matching farm sites.
- **Country**: full country name or two-letter code, such as Norway or NO.
- **Species**: part of a scientific or English name, or a FAO code.
- **Site status**: exact site status, such as Certified or In Initial Audit.
- **ASC standard**: exact standard name, such as Salmon or Shrimp.
- **Certification type**: exact type, such as Single Site or Multi Site with IMS.
- **Production system**: exact system name, such as Cages or Ponds, where published.
- **RAS module**: Yes or No.
- **Certificate number**, **Unit of certification ID**, **Farm site ID**: exact identifiers.

Optional filter fields apply to search queries only. Start URLs use their own filters. The ASC page does not save its form choices in the browser address. To filter a start URL, add `name`, `country`, `species`, `status`, `standard`, `certificationType`, `productionSystem`, `rasModule`, `certificateNumber`, `uocId` or `siteId` as query parameters; for example `https://asc-aqua.org/find-a-farm/?country=NO&status=Certified`. Text filters are case-insensitive; all except species and name use exact matches.

### Input Examples

Default directory input:

```json
{
  "startUrls": [{ "url": "https://asc-aqua.org/find-a-farm/" }],
  "maxResults": 5
}
```

Search by company name instead of supplying start URLs:

```json
{
  "searchQueries": ["Kingfish"],
  "maxResults": 5
}
```

### Output

Each item represents one farm site under one certificate, with all its species in an array. Example from an actual run:

```json
{
  "url": "https://asc-aqua.org/find-a-farm/ASC01686/",
  "certificateNumber": "ASC01686",
  "farmSiteId": "S0003694",
  "farmSite": "Seafarm",
  "siteStatus": "Expired",
  "siteStatusChangedAt": null,
  "company": "Seafarm B.V.",
  "uocId": "UOC01696",
  "uocName": "Seafarm",
  "country": "Netherlands",
  "countryCode": "NL",
  "standard": "Flatfish",
  "certificateStatus": "Expired",
  "certificationBody": "SGS UK",
  "certificationBodyEmail": "tazeen.kazi@sgs.com",
  "certificationType": "Single Site",
  "certificateValidFrom": "2021-12-20T00:00:00.000Z",
  "certificateValidUntil": "2024-12-19T00:00:00.000Z",
  "publicConsultationUntil": null,
  "productionSystem": null,
  "rasModule": "Yes",
  "latitude": 51.598682,
  "longitude": 3.689105,
  "species": [
    {
      "code": "TUR",
      "scientificName": "Scophthalmus maximus",
      "englishName": "Turbot"
    }
  ],
  "certificates": [
    {
      "uploadDate": "2023-05-09T00:00:00.000Z",
      "documentName": "Certificate Seafarm ASC farm and RAS_230509.pdf",
      "documentType": "Certificate",
      "url": "https://myasc.asc-aqua.org/netapp/FileHandler.ashx?id=A8627C9F-5F69-434B-B31D-7E4F1A0724AB",
      "documentExpiry": null,
      "certificateStatus": 76
    },
    {
      "uploadDate": "2021-12-20T00:00:00.000Z",
      "documentName": "211220_Certificate-ASC farm_Seafarm.pdf",
      "documentType": "Certificate",
      "url": "https://myasc.asc-aqua.org/netapp/FileHandler.ashx?id=B14AA2DB-A29A-4214-B219-2178B55F443E",
      "documentExpiry": null,
      "certificateStatus": 76
    }
  ],
  "certificateHistory": [],
  "audits": [
    {
      "auditId": "A0008133",
      "auditType": "Surveillance 2",
      "auditSubType": "Not applicable",
      "auditYear": 2023,
      "auditStandard": "Flatfish",
      "auditStatus": "Final audit report published",
      "auditStartDate": "2023-11-09T00:00:00.000Z",
      "auditEndDate": "2023-11-10T00:00:00.000Z",
      "auditReason": null,
      "auditDescription": null,
      "auditSitesCount": null,
      "auditPostponedType": null,
      "auditTeam": [
        {
          "auditorName": "Nikki den Boon",
          "auditorRole": "Interpreter",
          "auditorRemote": "N"
        },
        {
          "auditorName": "Cormac O'Sullivan",
          "auditorRole": "Environmental auditor",
          "auditorRemote": "N"
        },
        {
          "auditorName": "Cormac O'Sullivan",
          "auditorRole": "Lead auditor",
          "auditorRemote": "N"
        },
        {
          "auditorName": "Peter Parsons",
          "auditorRole": "Social auditor",
          "auditorRemote": "N"
        }
      ],
      "documents": [
        {
          "documentType": "Surveillance 2 Audit Report – Final",
          "uploadDate": "2024-03-01T00:00:00.000Z",
          "url": "https://myasc.asc-aqua.org/netapp/FileHandler.ashx?id=3E7ADB19-4B87-48E5-83E5-19F4C3A329D8",
          "language": "English",
          "secondLanguage": null
        },
        {
          "documentType": "Audit Announcement",
          "uploadDate": "2023-10-13T00:00:00.000Z",
          "url": "https://myasc.asc-aqua.org/netapp/FileHandler.ashx?id=B6B4A923-15D0-48F2-8876-66E32EBE53E9",
          "language": "English",
          "secondLanguage": null
        }
      ]
    },
    {
      "auditId": "A0006681",
      "auditType": "Surveillance 1",
      "auditSubType": null,
      "auditYear": 2022,
      "auditStandard": "Flatfish",
      "auditStatus": "Final audit report published",
      "auditStartDate": "2022-11-16T00:00:00.000Z",
      "auditEndDate": "2022-11-17T00:00:00.000Z",
      "auditReason": null,
      "auditDescription": null,
      "auditSitesCount": null,
      "auditPostponedType": null,
      "auditTeam": [
        {
          "auditorName": "Geert Anciaux",
          "auditorRole": "Social auditor",
          "auditorRemote": "N"
        },
        {
          "auditorName": "Nikki den Boon",
          "auditorRole": "Interpreter",
          "auditorRemote": "N"
        },
        {
          "auditorName": "Cormac O'Sullivan",
          "auditorRole": "Environmental auditor",
          "auditorRemote": "N"
        },
        {
          "auditorName": "Cormac O'Sullivan",
          "auditorRole": "Lead auditor",
          "auditorRemote": "N"
        }
      ],
      "documents": [
        {
          "documentType": "Surveillance 1 Audit Report – Final",
          "uploadDate": "2023-05-10T00:00:00.000Z",
          "url": "https://myasc.asc-aqua.org/netapp/FileHandler.ashx?id=BA5F33A1-FB84-4A1C-8116-9713E0A6AFBA",
          "language": "English",
          "secondLanguage": null
        },
        {
          "documentType": "Notice of delay or postponement",
          "uploadDate": "2023-02-23T00:00:00.000Z",
          "url": "https://myasc.asc-aqua.org/netapp/FileHandler.ashx?id=D260E319-C432-42F4-9272-643091425679",
          "language": "English",
          "secondLanguage": null
        },
        {
          "documentType": "Audit Announcement",
          "uploadDate": "2022-09-16T00:00:00.000Z",
          "url": "https://myasc.asc-aqua.org/netapp/FileHandler.ashx?id=69EDB7AF-3D1B-43CF-9402-65B454CC5E69",
          "language": "English",
          "secondLanguage": null
        }
      ]
    },
    {
      "auditId": "A0005060",
      "auditType": "Initial Audit",
      "auditSubType": null,
      "auditYear": 2021,
      "auditStandard": "Flatfish",
      "auditStatus": "Final audit report published",
      "auditStartDate": "2021-08-18T00:00:00.000Z",
      "auditEndDate": "2021-08-19T00:00:00.000Z",
      "auditReason": null,
      "auditDescription": null,
      "auditSitesCount": null,
      "auditPostponedType": null,
      "auditTeam": [
        {
          "auditorName": "Geert Anciaux",
          "auditorRole": "Social auditor",
          "auditorRemote": "N"
        },
        {
          "auditorName": "Nikki den Boon",
          "auditorRole": "Interpreter",
          "auditorRemote": "N"
        },
        {
          "auditorName": "Cormac O'Sullivan",
          "auditorRole": "Environmental auditor",
          "auditorRemote": "N"
        },
        {
          "auditorName": "Cormac O'Sullivan",
          "auditorRole": "Lead auditor",
          "auditorRemote": "N"
        }
      ],
      "documents": [
        {
          "documentType": "Initial Audit Report – Final",
          "uploadDate": "2021-12-20T00:00:00.000Z",
          "url": "https://myasc.asc-aqua.org/netapp/FileHandler.ashx?id=C623B110-EB0A-4F0B-B441-8B11DB2B7278",
          "language": "English",
          "secondLanguage": null
        },
        {
          "documentType": "Cancellation/Suspension/Withdrawn notice",
          "uploadDate": "2021-11-23T00:00:00.000Z",
          "url": "https://myasc.asc-aqua.org/netapp/FileHandler.ashx?id=88BD9DCE-A415-40E8-A7F5-9FAE96FB8A1B",
          "language": "English",
          "secondLanguage": null
        },
        {
          "documentType": "Initial Audit Report – Draft",
          "uploadDate": "2021-09-28T00:00:00.000Z",
          "url": "https://myasc.asc-aqua.org/netapp/FileHandler.ashx?id=066CE82B-B489-4DD9-9005-B8E3A4C38950",
          "language": "English",
          "secondLanguage": null
        },
        {
          "documentType": "Audit Announcement",
          "uploadDate": "2021-06-30T00:00:00.000Z",
          "url": "https://myasc.asc-aqua.org/netapp/FileHandler.ashx?id=F5C3B6BE-3E22-484F-9EE8-6ED5FB63E3BB",
          "language": "English",
          "secondLanguage": null
        }
      ]
    }
  ]
}
```

Download results in JSON, CSV, Excel, XML or HTML, or access them through the Apify API. JSON preserves nested audit and certificate records.

### Notes

- The directory includes expired, withdrawn and audit-stage entries as well as certified farms. Use **Site status** to restrict results. Site status and certificate status are separate fields and can differ.
- Several sites can share a certificate. A result limit counts sites, with duplicate site/certificate combinations removed separately within each URL or query. Overlapping inputs can return the same site again.
- Missing values are null; missing lists are empty. Dates use ISO 8601. Date-only information is represented at midnight UTC.
- Production system is mainly available for farms assessed against the ASC Farm Standard. Older entries can have no system, coordinates or status-change date.
- Certificate and audit records relate to the certificate and may cover multiple sites. Document availability depends on ASC. Documents are linked rather than downloaded.
- Unsupported URLs are skipped. Searches with no matching farms return no rows.

### Why use the ASC Certified Farms Scraper?

- **Complete site records**: keep species, coordinates and certification records together.
- **No login required**: collect publicly available certification information.
- **Flexible selection**: use farm names, countries, species, status or identifiers.
- **Predictable limits**: control result counts for each input independently.

### FAQ

#### Do I need an ASC account?

No. You do not need an account to collect the public directory records.

#### Can I scrape data on a schedule?

Yes. Use Apify Schedules to collect regular snapshots and connect the results to your tools.

#### Can I request additional filters or a private version?

Yes. Additional filters, customized output, private versions and scrapers for other websites can be requested using the contact details below.

### Need to scrape other certification and membership platforms?

- [amfori Members Scraper](https://apify.com/aboo.script/amfori-org-scraper): collect member companies, countries and company websites.

***

**Need help or want a custom solution?**

- 📧 Email: aboo.script@gmail.com
- 🧩 More scrapers: [Apify profile](https://apify.com/aboo.script)

### Image Credit

Image credit: [ASC](https://asc-aqua.org/)

# Actor input Schema

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

ASC Find a Farm directory or certificate URLs. Supported URL filters are name, country, status, standard, species, certificationType, productionSystem, rasModule, certificateNumber, uocId and siteId.

## `searchQueries` (type: `array`):

Company, unit of certification or farm site names. Case-insensitive text search. Use \* to search all farms with the optional filters. Each query has its own result limit.

## `maxResults` (type: `integer`):

Maximum farm sites per start URL or search query. Set 0 for all matching sites.

## `country` (type: `string`):

Country name or two-letter country code, for example Norway or NO. Applies to search queries only; start URLs retain their own filters.

## `species` (type: `string`):

Scientific name, English name or FAO code; partial text is accepted. Applies to search queries only; start URLs retain their own filters.

## `status` (type: `string`):

Exact farm site status, for example Certified or In Initial Audit. Applies to search queries only; start URLs retain their own filters.

## `standard` (type: `string`):

Exact standard name, for example Salmon or Shrimp. Applies to search queries only; start URLs retain their own filters.

## `certificationType` (type: `string`):

Exact type, for example Single Site or Multi Site with IMS. Applies to search queries only; start URLs retain their own filters.

## `productionSystem` (type: `string`):

Exact production system, for example Cages or Ponds. Applies to search queries only; start URLs retain their own filters.

## `rasModule` (type: `string`):

Yes or No. Applies to search queries only; start URLs retain their own filters.

## `certificateNumber` (type: `string`):

Exact ASC certificate number, for example ASC01371. Applies to search queries only; start URLs retain their own filters.

## `uocId` (type: `string`):

Exact UoC ID, for example UOC00754. Applies to search queries only; start URLs retain their own filters.

## `siteId` (type: `string`):

Exact site ID, for example S0000116. Applies to search queries only; start URLs retain their own filters.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://asc-aqua.org/find-a-farm/"
    }
  ],
  "maxResults": 5
}
```

# Actor output Schema

## `overview` (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 = {
    "startUrls": [
        {
            "url": "https://asc-aqua.org/find-a-farm/"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("aboo.script/asc-aqua-org-scraper").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 = { "startUrls": [{ "url": "https://asc-aqua.org/find-a-farm/" }] }

# Run the Actor and wait for it to finish
run = client.actor("aboo.script/asc-aqua-org-scraper").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 '{
  "startUrls": [
    {
      "url": "https://asc-aqua.org/find-a-farm/"
    }
  ]
}' |
apify call aboo.script/asc-aqua-org-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,aboo.script/asc-aqua-org-scraper"
        }
    }
}
```

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/4fgnf4e9GOShcyqcD/builds/ogTXAexagBL9svorL/openapi.json
