CreativeApplications APIcreativeapplications.net ↗
Access the CAN job board via API. Retrieve paginated job listings and full job details including employer, location, employment type, and description.
What is the CreativeApplications API?
The CreativeApplications.Net Jobs API covers 2 endpoints for browsing and reading job postings from the CAN community job board. list_jobs returns up to 28 job summaries per page including title, posting date, status, and excerpt. get_job fetches the full detail for a single Active posting, returning employer name, location, employment type, plain-text and HTML description, and how-to-apply instructions.
curl -X GET 'https://api.parse.bot/scraper/5b3cff2f-b729-4e7f-b678-5a0f185ae2a4/list_jobs?page=2' \ -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 creativeapplications-net-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: CreativeApplications.Net Jobs — browse listings, drill into detail."""
from parse_apis.creativeapplications_net_api import CreativeApplications, JobNotFound
client = CreativeApplications()
# Page through the newest job summaries on the board.
for summary in client.job_summaries.list(limit=5):
print(summary.title, summary.date, summary.status)
# Drill down: pick the first active listing and fetch its full detail.
first = client.job_summaries.list(limit=1).first()
if first is not None and first.slug is not None:
job = client.job_summaries.details(slug=first.slug)
print(job.title, job.employer, job.location)
print(job.description_text[:200] if job.description_text else "(no description)")
print("Apply links:", job.apply_links)
print("Tags:", job.tags)
# Point lookup by slug, with error handling for unknown slugs.
try:
job = client.jobs.get(slug="mechatronics-engineer-at-leva")
print(job.title, job.employment_type, job.category)
except JobNotFound:
print("Job not found on the board.")
print("exercised: job_summaries.list / job_summaries.details / jobs.get")
Returns one page of job offers from the CAN jobs board, newest first, 28 per page, in one round trip. Each item carries the title, excerpt, posting date (DD/MM/YYYY), status (Active or Expired) and image. Only Active jobs are publicly readable: for them slug and url are set and slug can be passed to get_job; Expired jobs are members-only archive entries, so slug and url are null for them. total is the site's overall job count and total_pages the last page number; has_more is true while further pages exist. A page beyond the last returns an empty items list with total and total_pages null. Omitting page returns page 1.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based page number of the job list (28 jobs per page). |
{
"type": "object",
"fields": {
"page": "integer, the page returned",
"items": "array of job summaries: title, slug (null when expired), url (null when expired), excerpt, date (DD/MM/YYYY), status (Active|Expired), image_url",
"total": "integer total jobs on the board as published by the site, null on an out-of-range page",
"has_more": "boolean, true when a later page exists",
"per_page": "integer, jobs per page (28)",
"total_pages": "integer last page number, null on an out-of-range page"
},
"sample": {
"data": {
"page": 1,
"items": [
{
"url": "https://www.creativeapplications.net/jobs/mechatronics-engineer-at-leva/",
"date": "05/10/2026",
"slug": "mechatronics-engineer-at-leva",
"title": "Mechatronics Engineer at Leva",
"status": "Active",
"excerpt": "Leva are looking for a proactive, hands-on Mechatronics Engineer who enjoys complex physical systems, makes sound decisions across disciplines and stays accountable for how the complete system performs.",
"image_url": "https://www.creativeapplications.net/wp-content/uploads/2026/10/Leva.png"
},
{
"url": null,
"date": "19/03/2025",
"slug": null,
"title": "Personal Assistant to Rafael Lozano-Hemmer at Atelier Lozano-Hemmer",
"status": "Expired",
"excerpt": null,
"image_url": "https://www.creativeapplications.net/wp-content/uploads/2025/03/vanishing_points_seoul_2018_ml_001.jpg"
}
],
"total": 1225,
"has_more": true,
"per_page": 28,
"total_pages": 44
},
"status": "success"
}
}About the CreativeApplications API
Browsing Job Listings
The list_jobs endpoint returns one page of job postings from the CreativeApplications.Net board, ordered newest first. Each response includes page, total, total_pages, per_page (fixed at 28), and has_more for pagination. Each item in the items array carries title, excerpt, date (formatted DD/MM/YYYY), status (Active or Expired), and image. For Expired postings, slug and url are null, so full detail retrieval is only possible for Active jobs. Pass the page parameter (1-based) to walk through the full board; out-of-range pages return null for total and total_pages.
Fetching Full Job Details
The get_job endpoint accepts a slug as returned in list_jobs.items[*].slug and returns the complete job posting. Response fields include title, date, status, employer, location, category, tags (array), image_url, url, and the job description in both description_text (plain text) and description_html (HTML). A dedicated how-to-apply section is also returned separately. The endpoint only resolves Active postings; passing a slug for an Expired job will not return content.
Scope and Limitations
CAN is a niche board focused on creative technology roles — media art, interactive design, software development for artistic applications, and related fields. Job metadata such as employment type and category reflect what the employer entered at submission time, so formatting may vary. The posting date is always DD/MM/YYYY. There is no search or filter parameter on list_jobs; filtering by location, category, or employer must be done client-side after fetching pages.
The CreativeApplications API is a managed, monitored endpoint for creativeapplications.net — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when creativeapplications.net 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 creativeapplications.net 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?+
- Aggregate CAN job postings into an internal creative-tech job tracker using
list_jobspagination anddatefields. - Monitor new Active postings daily by comparing
slugvalues across consecutivelist_jobscalls. - Display employer-attributed job cards with
employer,location, andexcerptin a curated job feed for creative developers. - Extract plain-text job descriptions via
description_textfromget_jobfor keyword analysis or skills mapping. - Build a category-filtered job digest by reading the
categoryandtagsfields returned byget_job. - Identify hiring trends in creative technology by tracking
dateandemployment_typefields across paginated results. - Archive full job detail — including how-to-apply instructions — before postings expire and slugs become inaccessible.
| 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 CreativeApplications.Net have an official developer API?+
What does `list_jobs` return for Expired postings?+
list_jobs does include Expired postings in its results — they appear with status: 'Expired' and their title, excerpt, date, and image fields are populated. However, slug and url are null for Expired items, so those postings cannot be passed to get_job for full detail retrieval. Only Active postings have accessible full pages.Can I filter or search jobs by category, location, or employer in a single request?+
list_jobs accepts only a page parameter; there are no server-side filters for category, location, employer, or keyword. Filtering must be applied client-side after retrieving pages. You can fork this API on Parse and revise it to add a filtered endpoint if your use case requires it.How fresh are the job listings returned by the API?+
date (DD/MM/YYYY format) in both list_jobs items and get_job responses. There is no timestamp for when a job transitioned from Active to Expired, and the API does not expose last-modified metadata.Does the API return application counts, views, or employer contact details beyond the employer name?+
employer (name) and the how-to-apply section from the posting, but not structured contact details, application counts, or view metrics. You can fork this API on Parse and revise it to add an endpoint targeting any additionally exposed employer or engagement data.