Kampuskago APIkampuskago.ng ↗
Access open freelance projects on Kampuskago's Kago Lance marketplace. Get budgets in naira, required skills, timelines, and client info via 2 endpoints.
What is the Kampuskago API?
The Kampuskago API exposes 2 endpoints covering the Kago Lance freelance marketplace at kampuskago.ng. The list_projects endpoint returns every currently open project in a single response — with budget ranges in naira, skill tags, timeline, project type, and application URL — while get_project returns full detail on a single project including proposal count and client identity.
curl -X GET 'https://api.parse.bot/scraper/eca01fed-1feb-44f8-b325-194a315b5ca5/list_projects?sort=newest' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace kampuskago-ng-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: browse Kago Lance freelance projects, drill into details."""
from parse_apis.kampuskago_ng_api import KagoLance, SortOrder, InputNotFound
client = KagoLance()
# List open projects, newest first, capped at 5 items.
for summary in client.project_summaries.list(sort=SortOrder.NEWEST, limit=5):
print(summary.title, summary.category, f"₦{summary.budget_min_ngn}–{summary.budget_max_ngn}")
# Drill down: grab the first project summary and fetch its full detail.
summary = client.project_summaries.list(limit=1).first()
if summary is not None:
project = summary.details()
print(project.title, project.status)
print("Skills:", ", ".join(project.skills_required))
print("Client:", project.client_name, f"(@{project.client_username})")
print("Apply:", project.application_url)
# Same detail via direct point lookup using the discovered id.
try:
same = client.projects.get(id=summary.id)
print(same.title, same.proposal_count, "proposals")
except InputNotFound:
print("Project no longer available")
print("exercised: project_summaries.list / details / projects.get")
Returns every currently open freelance project shown on the public Browse Projects page in one round trip (the site renders the whole open set on a single page; no paging inputs exist). Each row is one project with its title, category, fixed/hourly type, budget range in Nigerian naira, required skills, client username, posted date, timeline and the application URL (the project page, where applying requires a freelancer account). Optional filters (category, project_type, min_budget, max_budget) and sort are applied by the site; a filter that matches nothing returns an empty projects array with count 0. The open-project pool is small (a handful of projects), so an empty result under a filter is normal.
| Param | Type | Description |
|---|---|---|
| sort | string | Ordering of the returned projects, from the site's sort menu. |
| category | string | Category slug from the site's category filter, e.g. web-development or graphic-design (the site also accepts group slugs such as development). Omitted = all categories. Unknown slugs return an empty list. |
| max_budget | string | Maximum budget in naira as a whole number string (e.g. 100000). Omitted = no upper bound. |
| min_budget | string | Minimum budget in naira as a whole number string (e.g. 10000). Omitted = no lower bound. |
| project_type | string | Restrict to fixed-price or hourly projects. Omitted = both. |
{
"type": "object",
"fields": {
"count": "number of projects returned",
"projects": "array of open project summaries (id, title, category, project_type, description, budget_min_ngn, budget_max_ngn, budget_type, skills_required, client_username, posted_date, timeline, proposal_count, application_url)",
"projects[].id": "project identifier, pass unchanged to get_project.project_id",
"projects[].timeline": "delivery window as shown, e.g. 30 days",
"projects[].posted_date": "posting date as shown, e.g. 11 Apr 2026",
"projects[].budget_max_ngn": "integer upper budget bound in naira; equals budget_min_ngn for single-amount budgets",
"projects[].budget_min_ngn": "integer lower budget bound in naira (null when the card shows no amount)",
"projects[].application_url": "absolute URL of the project page where proposals are submitted (login required on the site)",
"projects[].skills_required": "array of skill tag strings"
},
"sample": {
"data": {
"count": 1,
"projects": [
{
"id": "PRJ-14B6F2B1-818",
"title": "WordPress Website Management",
"category": "Web Development",
"timeline": "30 days",
"budget_type": "fixed price",
"description": "I need someone good with WordPress, especially the Gutenberg editor.",
"posted_date": "11 Apr 2026",
"project_type": "Fixed",
"budget_max_ngn": 70000,
"budget_min_ngn": 40000,
"proposal_count": 0,
"application_url": "https://kampuskago.ng/v2/freelance/project-detail.php?id=PRJ-14B6F2B1-818",
"client_username": "patron",
"skills_required": [
"UI/UX Design",
"Web Development",
"WordPress"
]
}
]
},
"status": "success"
}
}About the Kampuskago API
What the API covers
The Kampuskago API surfaces open freelance projects listed on the Kago Lance Browse Projects page. Each project record includes a unique identifier (e.g. PRJ-14B6F2B1-818), a title, category, project_type (fixed-price or hourly), budget_min_ngn and budget_max_ngn as integers in Nigerian naira, a delivery timeline, a posted_date, an array of skills_required tags, and an application_url pointing to the proposal submission page on the site.
Filtering and sorting with list_projects
list_projects accepts optional query parameters to narrow results: category takes a slug such as web-development or graphic-design; project_type restricts to fixed or hourly projects; min_budget and max_budget accept whole-number naira strings to set a budget window; and sort applies the same ordering options available in the site's sort menu. Because the source renders all open projects on a single page, there are no pagination parameters — the full open set is returned in one call.
Project detail with get_project
get_project accepts a project_id exactly as returned in list_projects and resolves the full project record. In addition to the fields available in the list view, it adds status (e.g. "Open for Proposals"), a proposal_count integer, the client_name display name, and client_username (without the @ symbol). The application_url field is present in both endpoints; submitting a proposal on the destination page requires a Kampuskago account.
Coverage scope
All budget figures are denominated in Nigerian naira (NGN), reflecting the marketplace's primary user base. Projects without a posted budget return null for budget_min_ngn. The API covers only projects that are currently open; closed, awarded, or draft projects are not included in responses.
The Kampuskago API is a managed, monitored endpoint for kampuskago.ng — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when kampuskago.ng changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official kampuskago.ng API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Alert Nigerian freelancers when new projects matching a skill tag (e.g.
reactorlogo-design) appear inskills_required - Track average
budget_min_ngnandbudget_max_ngnby category over time to benchmark naira rates for freelance categories - Build a project aggregator that combines Kago Lance listings with other Nigerian gig platforms, normalising budgets to a common currency
- Monitor
proposal_countchanges on target projects to gauge competition before submitting a bid - Filter open projects by
project_type(fixed vs. hourly) andmax_budgetto surface only projects within a freelancer's preferred range - Identify active clients by aggregating
client_usernameacross open projects for business development research
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Kampuskago have an official developer API?+
What does list_projects return, and can I page through results?+
count field and an array of project objects. There are no pagination parameters because the source presents all open projects on one page. You can filter by category, project_type, min_budget, and max_budget, and reorder via sort, but you cannot request a subset of pages.Does the API expose historical or closed projects?+
Does get_project return the full proposal text or freelancer bids?+
get_project returns the project's public-facing detail: title, description, status, budget range, timeline, required skills, proposal count, client name and username, and the application URL. Individual proposal content and bidder identities are not part of the response. You can fork this API on Parse and revise it to add an endpoint covering proposal data if that data is publicly accessible.Are budgets always in Nigerian naira, and what happens when no budget is posted?+
budget_min_ngn, budget_max_ngn) are integers in Nigerian naira. When a project listing shows no budget amount, budget_min_ngn returns null. For single-amount budgets, budget_min_ngn and budget_max_ngn will be equal.