iFixit APIifixit.com ↗
Search and retrieve iFixit repair guides via API. Get step-by-step instructions, required tools, parts lists, difficulty ratings, and device category trees.
What is the iFixit API?
This API provides access to iFixit's public repair guide library across 3 endpoints, returning structured data including step-by-step instructions, tools, parts, difficulty ratings, and device category hierarchies. The get_guide endpoint exposes complete guide content — every step's ordered lines, media objects, and bullet types distinguishing warnings from notes — while search_guides lets you query the full catalog with pagination and returns per-result metadata like category, subject, and difficulty without requiring a separate fetch.
curl -X GET 'https://api.parse.bot/scraper/b6d5499b-51f4-4212-9cb8-dd3aace3f274/search_guides?limit=5&query=iPhone+battery+replacement&offset=0' \ -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 ifixit-com-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: iFixit Repair Guides SDK — search, browse, and drill into guides."""
from parse_apis.ifixit_com_api import IFixit, GuideNotFound
client = IFixit()
# Search for battery replacement guides, capped at 3 results
for guide in client.guides.search(query="iPhone battery replacement", limit=3):
print(guide.title, guide.difficulty, guide.category)
# Take ONE result and drill into its full details
summary = client.guides.search(query="MacBook screen", limit=1).first()
if summary:
full_guide = summary.details()
print(full_guide.title, full_guide.time_required)
for tool in full_guide.tools[:3]:
print(f" Tool: {tool.text} (optional={tool.isoptional})")
for step in full_guide.steps[:2]:
print(f" Step {step.orderby}: {step.title}")
# Browse a device category to see all its available guides
category = client.categories.get(category="iPhone 12")
print(category.display_title, f"({len(category.guides)} guides)")
for g in category.guides[:3]:
print(f" {g.title} — {g.difficulty}")
# Typed error handling: catch a not-found guide
try:
client.guides.get(guide_id="9999999")
except GuideNotFound as exc:
print(f"Guide not found: {exc}")
print("exercised: guides.search / summary.details / guides.get / categories.get")
Full-text search across iFixit's public repair guide library. Returns guide summaries matching the query. Results are auto-iterated; each item carries enough metadata (difficulty, category, subject) to decide whether to fetch the full guide.
| Param | Type | Description |
|---|---|---|
| limit | integer | Maximum number of results to return per page. |
| queryrequired | string | Search query for finding repair guides (e.g. 'iPhone battery replacement', 'MacBook screen'). |
| offset | integer | Number of results to skip for pagination. |
{
"type": "object",
"fields": {
"limit": "integer",
"query": "string",
"offset": "integer",
"results": "array of guide summaries with guideid, title, url, category, subject, type, difficulty, summary, image",
"more_results": "boolean",
"total_results": "integer"
},
"sample": {
"data": {
"limit": 5,
"query": "iPhone battery replacement",
"offset": 0,
"results": [
{
"url": "https://www.ifixit.com/Guide/iPhone+12+Battery+Replacement/140588",
"type": "replacement",
"image": {
"id": 2329837,
"guid": "3P3vYIESwES1TCR5",
"standard": "https://guide-images.cdn.ifixit.com/igi/3P3vYIESwES1TCR5.standard"
},
"title": "iPhone 12 Battery Replacement",
"guideid": 140588,
"subject": "Battery",
"summary": "iPhone batteries are rated to hold 80% of their...",
"category": "iPhone 12",
"difficulty": "Moderate"
}
],
"more_results": false,
"total_results": 5
},
"status": "success"
}
}About the iFixit API
Searching and Browsing Guides
The search_guides endpoint accepts a query string (e.g. 'iPhone battery replacement') and returns an array of guide summaries. Each summary includes guideid, title, url, category, subject, type, difficulty, summary, and a cover image object. Pagination is handled via limit and offset parameters, and the more_results boolean plus total_results integer let you implement full pagination loops without guessing.
Retrieving Full Guide Content
Passing a numeric guide_id to get_guide returns the complete repair guide. The steps array is the core payload: each step carries a stepid, orderby position, title, a lines array where each line has a bullet type (distinguishing regular instructions, warnings, and notes), and a media object. The tools and parts arrays each contain objects with text, url, thumbnail, quantity, and isoptional flags, making it straightforward to distinguish required from optional items. Author metadata (userid, username, reputation) is also returned.
Navigating Device Categories
The get_category endpoint takes a category string — exact device names like 'MacBook Pro 15" Retina Display Mid 2015' — and returns the full context for that node in iFixit's device taxonomy. The response includes a guides array of all repair guides for that device, children (sub-categories), ancestors (the path from root to this node), description, display_title, and solutions_count. This is useful for building device-scoped repair browsers or enumerating all guides for a product line without running repeated searches.
The iFixit API is a managed, monitored endpoint for ifixit.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ifixit.com 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 ifixit.com 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 repair assistant app that surfaces step-by-step instructions and parts lists for a user's specific device model
- Index iFixit guides by difficulty rating to recommend beginner-friendly repairs first
- Extract tools and parts data from
get_guideto cross-reference against e-commerce inventory - Enumerate all guides for a device using
get_categoryto generate a complete repair catalog for that model - Track
solutions_countper category to identify which device families have the most community repair coverage - Use
search_guideswith pagination to build a local mirror of guide metadata for offline search or analytics - Parse step
linesbullet types to separate warnings from instructions when rendering guides in a custom UI
| 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 iFixit have an official developer API?+
What does `get_guide` return for each repair step?+
stepid, an orderby integer for sequencing, a title, a media object with images or video for that step, and a lines array. Each line carries a bullet type that distinguishes between standard instructions, warnings (e.g. safety notices), and notes (supplementary tips). Tools and parts are returned as top-level arrays on the guide, not per-step.Does the API return community answers, comments, or teardown content?+
search_guides and get_guide) and device category metadata (via get_category). Community Q&A threads, teardown articles, and user comments are not exposed. You can fork this API on Parse and revise it to add endpoints for those content types.How does pagination work in `search_guides`?+
limit (max results per page) and offset (number of results to skip). The response includes total_results and a more_results boolean, so you can iterate until more_results is false without needing to calculate total pages manually.Can I retrieve guides for an entire product line, not just a single device?+
get_category returns all guides for a specific named category and its children sub-category names, but does not recursively fetch guides for all descendants in one call. To cover a full product line you would need to call get_category once per child. You can fork this API on Parse and revise it to add a recursive category traversal endpoint.