# Nairaland Scraper - Nigeria Forum Topics, Views & Replies (`logiover/nairaland-scraper`) Actor

Export Nairaland.com forum topics in bulk from any board: title, author, reply count, view count, thread length, last update and topic URL. Track Nigerian discussion on politics, business, jobs, tech and more as JSON, CSV or Excel.

- **URL**: https://apify.com/logiover/nairaland-scraper.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Social media, News
- **Stats:** 2 total users, 1 monthly users, 100.0% 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?

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

## Nairaland Scraper — Nigeria Forum Topics, Views & Replies

Nairaland in rows: topic title, author, reply count, view count, thread length, last update and a direct link — from any board on Nigeria's largest online forum.

### What does the Nairaland Scraper do?

This Actor collects discussion topics from **Nairaland**, the forum that has been the centre of Nigerian online conversation for two decades, and returns one row per topic with the numbers that tell you whether anyone actually cared: **how many replies it drew, how many people read it, and how long the thread ran**.

That combination is what makes the export useful rather than decorative. A politics topic with 500 replies and 49,000 views is a story; the same board's median topic has a handful of each. Sorting an export on `views` surfaces what Nigeria was actually talking about on a given day.

One technical detail matters and the Actor handles it for you. Nairaland serves Nigerian visitors and starts refusing requests from elsewhere once you browse past the first page or two. Runs are therefore **pinned to Nigerian residential addresses**, which is the difference between two pages of rows and a full crawl.

### Who is it for?

- **Market researchers** tracking Nigerian consumer sentiment and conversation.
- **Journalists and media monitors** covering Nigerian politics, business and culture.
- **Brand and reputation teams** watching how a company or product is discussed.
- **Social scientists** studying West African online discourse at scale.
- **Recruiters and job-market analysts** following the jobs and career boards.
- **Trend analysts** measuring what breaks out and how fast.
- **NLP teams** building Nigerian-English conversational datasets.

### Use cases

- Track the politics board through an election cycle.
- Find the highest-engagement topics on a board by views or replies.
- Monitor the jobs and career boards for hiring activity.
- Watch a brand or product surface in the business or technology-market boards.
- Measure discussion volume on a topic over time.
- Identify the most active contributors on a board.
- Build a Nigerian-English text corpus seeded from real thread titles.
- Compare engagement across boards — politics against romance against education.

### Why use this Nairaland Scraper?

- **Nigeria-pinned proxying built in.** Without it the crawl dies around page three; with it, thousands of topics come back cleanly.
- **Engagement numbers on every row** — replies, views and thread length, not just titles.
- **Author and last poster**, so you can see who starts conversations and who keeps them alive.
- **Multiple boards in one run**, each row tagged with the board it came from.
- **Pinned announcement threads handled.** Boards repeat sticky topics on every page; the crawler deduplicates them instead of stalling.
- **Direct topic and author links** for anything you want to open or follow up.

### What data can you extract?

| Field | Description |
| --- | --- |
| `topicId` | Nairaland's own topic identifier |
| `title` | Topic title |
| `board` | Which board the topic came from |
| `author` | Username who started the thread |
| `posts` | Number of posts in the thread |
| `views` | How many times the thread was viewed |
| `pages` | How many pages long the thread runs |
| `lastUpdated` | When it was last posted to, in Nairaland's own wording |
| `lastPostBy` | Username of the most recent poster |
| `authorUrl` | Link to the author's profile |
| `url` | Direct link to the topic |

#### Sample output

```json
{
  "topicId": "8728879",
  "title": "2026: Osun Governorship Election (Live Updates)",
  "board": "politics",
  "author": "fergie001",
  "posts": 524,
  "views": 49267,
  "pages": 17,
  "lastUpdated": "11:16am On Aug 24",
  "lastPostBy": "tfrancis",
  "authorUrl": "https://www.nairaland.com/fergie001",
  "url": "https://www.nairaland.com/8728879/2026-osun-governorship-election-live"
}
```

### How to use the Nairaland Scraper

#### Option A — one board

Put a board name in **Boards** — `politics`, `business`, `jobs`, `romance`, `education`, `technology-market`, `career`, `health`, `celebrities` — set **Maximum topics** and run.

#### Option B — several boards at once

List multiple boards, one per line. The row budget is shared across them and every row carries its `board`.

#### Option C — paste board URLs

Full URLs work too. `https://www.nairaland.com/politics` is accepted exactly as copied from the address bar.

#### Option D — find what broke out

Run a board deep, then sort the export on `views` or `posts`. The top of that list is the day's real story.

### Input parameters

| Parameter | Type | Description |
| --- | --- | --- |
| `boards` | array | Board names or URLs, one per line |
| `maxItems` | integer | How many topics to collect in total |
| `proxyConfiguration` | object | Nigerian residential proxying — required |

### Tips for best results

- **Leave the proxy as configured.** Nigerian residential is not a preference here; deeper pages are refused from anywhere else.
- **Sort on `views`, not position.** Board order is recency; views tell you what mattered.
- **`pages` is a good proxy for thread depth** — a seventeen-page thread is a sustained argument, not a one-line post.
- **Board names come from the URL.** Use `technology-market`, not "Technology Market".
- **Pinned topics repeat on every page.** They appear once in your export; that is the deduplication working.

### Integrations

Send results to Google Sheets, Airtable, Slack, Zapier, Make or your own service through Apify's integrations, or schedule a daily run to track a board over time.

### API usage

```bash
curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~nairaland-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "boards": ["politics", "business"],
    "maxItems": 1000
  }'
```

Results export as JSON, CSV, Excel, XML or RSS.

### Use with AI agents (MCP)

Available as a tool through Apify's MCP server, so an agent can answer "what is Nairaland discussing about the election" or pull the day's highest-engagement topics on demand.

### FAQ

#### Do I need a Nairaland account?

No. The board pages this Actor reads are open to any visitor.

#### Why does it require a proxy?

Nairaland answers Nigerian addresses and begins refusing requests from elsewhere past the first page or two. The run is pinned to Nigerian residential addresses so the crawl can go deep.

#### How many topics can one run return?

Boards page a long way back. Thousands of topics from a single board is routine.

#### Does it collect the post content?

No. This Actor exports the topic row — title, author, replies, views, thread length and last update. Post bodies are not included.

#### What boards are available?

Any board name that appears in a Nairaland URL: `politics`, `business`, `jobs`, `career`, `education`, `romance`, `health`, `celebrities`, `technology-market`, `nairaland` and the rest.

#### Why is `lastUpdated` text rather than a date?

Nairaland writes recent activity as "11:16am On Aug 24" with no year. Rather than guess a year and ship a date column that is quietly wrong on older threads, the Actor reports the site's own wording.

#### Why is `lastPostBy` occasionally empty?

On a thread nobody has replied to, the author and the last poster are the same person and Nairaland prints only one name.

#### Can I export to CSV or Excel?

Yes — JSON, CSV, Excel, XML and RSS.

#### How fresh is the data?

Every run reads Nairaland live.

#### Why did my run return zero topics?

Usually a board name that does not exist. Open `nairaland.com/<board>` in a browser to confirm it loads.

### Is it legal to scrape Nairaland?

This Actor reads only public board pages that any visitor can open, and collecting publicly available data is generally lawful. You are responsible for how you use it — respect Nairaland's terms, treat usernames as personal data under applicable privacy law, and do not use author links for unsolicited bulk contact.

### Related scrapers

Pair with the other forum, social and regional Actors in the store to cover community discussion across markets alongside Nigeria.

# Actor input Schema

## `boards` (type: `array`):

Which Nairaland boards to crawl, one per line. Use the name from the URL — politics, business, jobs, romance, education, technology-market, career, health, celebrities, nairaland. Full board URLs work too.

## `maxItems` (type: `integer`):

How many topics to collect in total across every board.

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

Required. Nairaland answers requests from Nigeria and blocks deeper pages from elsewhere, so the run is pinned to Nigerian residential addresses.

## Actor input object example

```json
{
  "boards": [
    "politics"
  ],
  "maxItems": 500,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "NG"
  }
}
```

# Actor output Schema

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

Every record collected in this run. Open the Dataset tab to browse, filter or export as JSON, CSV or Excel.

# 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 = {
    "boards": [
        "politics"
    ],
    "maxItems": 500,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "NG"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/nairaland-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 = {
    "boards": ["politics"],
    "maxItems": 500,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "NG",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/nairaland-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 '{
  "boards": [
    "politics"
  ],
  "maxItems": 500,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "NG"
  }
}' |
apify call logiover/nairaland-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,logiover/nairaland-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/PwOt4N2aRQ366S5lI/builds/mdQAXkRAJEUqeeAnP/openapi.json
