parsejd
Input
Samples:
Supports Greenhouse, Lever, Ashby, Workday, Indeed, and most public job boards. LinkedIn requires login — paste text instead.
Each section between --- is parsed independently. Up to 20 per batch.
0 detected
0
Output
Paste a job description and click Parse
Returns structured JSON with every field present
API Usage
# Single parse — from text
curl -X POST https://parsejd.run/v1/parse \
  -H "Content-Type: application/json" \
  -H "X-RapidAPI-Key: YOUR_API_KEY" \
  -d '{"text": "Senior Engineer at Acme..."}'

# Single parse — from URL
curl -X POST https://parsejd.run/v1/parse \
  -H "Content-Type: application/json" \
  -H "X-RapidAPI-Key: YOUR_API_KEY" \
  -d '{"url": "https://boards.greenhouse.io/company/jobs/12345"}'

# Batch parse — up to 20 items
curl -X POST https://parsejd.run/v1/parse-batch \
  -H "Content-Type: application/json" \
  -H "X-RapidAPI-Key: YOUR_API_KEY" \
  -d '{"items": [{"text": "JD one..."}, {"url": "https://..."}]}'
import httpx

API_KEY = "YOUR_API_KEY"
BASE    = "https://parsejd.run/v1"
HEADERS = {"X-RapidAPI-Key": API_KEY, "Content-Type": "application/json"}

# Parse from text
result = httpx.post(f"{BASE}/parse", headers=HEADERS, json={"text": jd_text}).json()

# Parse from URL
result = httpx.post(f"{BASE}/parse", headers=HEADERS, json={"url": "https://boards.greenhouse.io/..."}).json()

# Check confidence
if result["meta"]["confidence"] < 0.75:
    print("Low confidence:", result["meta"]["confidence_flags"])

# Batch parse
batch = httpx.post(f"{BASE}/parse-batch", headers=HEADERS, json={
    "items": [{"text": jd1}, {"text": jd2}, {"url": "https://..."}]
}).json()

for item in batch["results"]:
    if item["success"]:
        process(item["result"])
    else:
        print(f"Item {item['index']} failed: {item['error']}")
const API_KEY = "YOUR_API_KEY";
const BASE    = "https://parsejd.run/v1";
const headers = { "X-RapidAPI-Key": API_KEY, "Content-Type": "application/json" };

// Parse from text
const result = await fetch(`${BASE}/parse`, {
  method: "POST", headers,
  body: JSON.stringify({ text: jdText })
}).then(r => r.json());

// Parse from URL
const urlResult = await fetch(`${BASE}/parse`, {
  method: "POST", headers,
  body: JSON.stringify({ url: "https://boards.greenhouse.io/..." })
}).then(r => r.json());

// Batch parse
const batch = await fetch(`${BASE}/parse-batch`, {
  method: "POST", headers,
  body: JSON.stringify({
    items: [{ text: jd1 }, { text: jd2 }, { url: "https://..." }]
  })
}).then(r => r.json());

batch.results.forEach(item => {
  if (item.success) process(item.result);
  else console.error(`Item ${item.index}: ${item.error}`);
});