jrdz APIjrdz.dev ↗
Access Jonathan Rodriguez's full developer CV, portfolio projects, work history, skills, certifications, and tech blog posts via 3 structured API endpoints.
What is the jrdz API?
The jrdz.dev API exposes 3 endpoints covering the complete professional profile and blog content from Jonathan Rodriguez's developer portfolio. The get_profile endpoint returns over ten structured fields including work experience, certifications, projects, and technical skills. Blog content is accessible via list_posts for filtered summaries and get_post for full article text. Both English and Spanish locales are supported across all endpoints.
curl -X GET 'https://api.parse.bot/scraper/3cc76d40-88b5-421b-a583-e20ad73c9398/get_profile?lang=en' \ -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 jrdz-dev-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: jrdz_dev_api SDK — bounded, re-runnable; every call capped."""
from parse_apis.jrdz_dev_api import Jrdz, Lang, Category, PostNotFound
client = Jrdz()
# Fetch the developer profile
profile = client.profiles.get(lang=Lang.EN)
print(profile.name, profile.title)
print(profile.location)
for proj in profile.projects[:3]:
print(proj.title, proj.technologies)
# List blog posts filtered by category
for post in client.posts.list(category=Category.CLOUD, limit=3):
print(post.title, post.pub_date)
# Get full article content using a slug derived from the post listing
first_post = client.posts.list(limit=1).first()
if first_post:
slug = first_post.link.replace("https://jrdz.dev/", "").rstrip("/")
try:
article = client.articles.get(slug=slug)
print(article.title, article.pub_date)
print(article.content[:100])
except PostNotFound as e:
print(f"not found: {e.slug}")
print("exercised: profiles.get / posts.list / articles.get")
Returns the full professional profile/CV including personal info, about summary, projects, work experience, education, certifications, and skills. Supports English and Spanish locales.
| Param | Type | Description |
|---|---|---|
| lang | string | Language locale for the profile content. |
{
"type": "object",
"fields": {
"name": "Full name of the developer",
"about": "Professional summary paragraph",
"title": "Professional title",
"location": "Geographic location",
"projects": "Array of portfolio projects with title, url, description, and technologies",
"education": "Array of educational entries with institution, degree, and period",
"soft_skills": "Array of soft skill names",
"certifications": "Array of professional certifications with title, issuer, credential_id, and year",
"work_experience": "Array of work positions with company, role, period, responsibilities, and technologies",
"technical_skills": "Array of technical skill names"
},
"sample": {
"data": {
"name": "Jonathan Rodriguez",
"about": "DevOps and Software Engineer with 3+ years of IT experience...",
"title": "DevOps Engineer & Software Engineer",
"location": "La Libertad, El Salvador",
"projects": [
{
"url": "https://azmvsupport.vercel.app",
"title": "Azure Resource Move Support",
"description": "Tool to check Azure resource move support across regions and subscriptions",
"technologies": [
"TypeScript",
"Svelte",
"Vercel",
"Bulma CSS"
]
}
],
"education": [
{
"degree": "Software Engineering",
"period": "2022 - 2024",
"institution": "ITCA FEPADE Santa Tecla"
}
],
"soft_skills": [
"Communication",
"Teamwork",
"Problem Solving"
],
"certifications": [
{
"url": "https://learn.microsoft.com/en-us/users/jrdz/credentials/63eb8b4305fa1a14",
"year": "2025",
"title": "Microsoft Certified: Azure Fundamentals (AZ-900)",
"issuer": "Microsoft",
"credential_id": "63EB8B4305FA1A14"
}
],
"work_experience": [
{
"role": "DevOps Engineer",
"period": "November 2025 - Present",
"company": "Banco Agricola El Salvador",
"company_url": "https://www.bancoagricola.com",
"description": "Developing and maintaining CI/CD pipelines...",
"technologies": [
"AWS",
"Docker",
"Kubernetes"
],
"responsibilities": [
"Implement DevSecOps security and compliance across CI/CD pipelines."
]
}
],
"technical_skills": [
"Linux",
"Bash Scripting",
"Docker",
"Kubernetes",
"Terraform"
]
},
"status": "success"
}
}About the jrdz API
Profile and CV Data
The get_profile endpoint returns a structured CV-style document including name, title, location, about summary, work_experience (with company, role, period, responsibilities, and technologies per entry), education (institution, degree, period), certifications (title, issuer, credential_id, year), technical_skills, and soft_skills. The optional lang parameter switches the response content between English and Spanish locales.
Blog Post Listing and Filtering
The list_posts endpoint returns an array of post summaries from the site's blog, each including title, link, description, publication date, and category tags. The total field in the response reflects the count after filtering. You can narrow results using the lang parameter for language and the category parameter (a slug string) to filter by topic. Omitting category returns all posts across all subjects.
Full Post Content
The get_post endpoint fetches the complete text of a single article by its URL path slug, such as cloud/azure/fundamentals. The response includes title, content (full article text), pub_date in ISO 8601 format, tags (an array of category and topic labels), and the canonical url. The blog/ prefix is appended automatically if omitted from the slug input.
The jrdz API is a managed, monitored endpoint for jrdz.dev — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when jrdz.dev 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 jrdz.dev 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?+
- Build a personal portfolio mirror site pulling live CV data from
get_profileincluding projects and work history. - Display Jonathan's certifications and their issuers on a resume aggregator using the
certificationsfield. - Retrieve Spanish-language blog posts with
list_postsusing thelangparameter for a Spanish-speaking audience. - Fetch full article content from
get_postto index jrdz.dev blog posts in a personal knowledge base or search tool. - Filter tech blog posts by category slug via
list_poststo surface only cloud or backend-related articles. - Pull
technical_skillsandsoft_skillsfields to populate a developer skill comparison or tagging system. - Aggregate publication dates and tags from blog posts to build a chronological content timeline.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does jrdz.dev have an official developer API?+
What does `get_profile` return for work experience entries?+
work_experience array includes the company name, role title, period (date range), an array of responsibilities, and an array of technologies used in that position. The lang parameter controls whether text fields are returned in English or Spanish.Can I filter blog posts by both language and category at the same time?+
list_posts accepts both lang and category as independent optional parameters, so you can pass both together to narrow results to a specific language and category slug simultaneously. The response total field reflects the filtered count.Does the API expose comments or engagement data for blog posts?+
get_post and list_posts, but does not return comment counts, view counts, or reader engagement signals. You can fork this API on Parse and revise it to add an endpoint targeting that data if it becomes available on the site.Is pagination supported for blog post listings?+
list_posts endpoint returns all matching posts in a single response along with a total count. There are no page or offset parameters currently exposed. You can fork this API on Parse and revise it to add pagination parameters for large result sets.