The LEGO Parts/Sets/Colors and Inventories of every official LEGO set in the Rebrickable database is
available for download as csv files here. These files are automatically updated daily.
If you need more details, you can use the API which provides
real-time data, but has rate limits that prevent bulk downloading of data.
You can use these files for any purpose. If you publish any articles please
let us know and maybe we can help promote it.
This database stores only official LEGO items - Sets, Parts and Minifigs (no B-Models, Sub-Sets, MOCs)
Sets and Minifigs contain one or more Inventories (inventories.csv)
Inventories can contain Sets (inventory_sets.csv) and/or Parts (inventory_parts.csv) and/or Minifigs (inventory_minifigs.csv)
Part Relationship rel_types are: (P)rint, Pai(R), Su(B)-Part, (M)old, Pa(T)tern, (A)lternate
Schema Diagram for LEGO datafiles (click to expand)
The LDraw images used on Rebrickable were generated from the LDraw system
and are provided here for your use. We do not provide bulk downloads for LEGO Element or Photo images.
Error - You are not logged in!
Sorry you must be logged in before you can do that.
Error - Pro Plan required
Sorry you need to upgrade to the Pro Plan before you can use this feature.
Are you sure?
Oops, something has gone wrong
Please see the Bugs Forum
for help with the issue below, or create a new topic for it if not found. Or you can try refreshing this page.
SELECT "lego_color"."id", "lego_color"."name", "lego_color"."rgb", "lego_color"."is_trans", "lego_color"."fuzzy_color_id", "lego_color"."is_active" FROM "lego_color" WHERE "lego_color"."is_active" ORDER BY "lego_color"."name" ASCSELECT ••• FROM "lego_color" WHERE "lego_color"."is_active" ORDER BY "lego_color"."name" ASC
0.41
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./lego/views/parts.py in download_files(832)
colors_dict = {c.id: c for c in Color.objects.all()}
SELECT "lego_part"."id", "lego_part"."part_num", "lego_part"."name", "lego_part"."part_cat_id", "lego_part"."notes", "lego_part"."is_active", "lego_part"."search_vector", "lego_part"."ldraw_part_id", "lego_part"."bricklink_part_id", "lego_part"."ignore_color_errors", "lego_part"."part_material_id", "lego_part"."is_bricklink_minifig", "lego_part"."is_bricklink_book", "lego_part"."is_bricklink_gear", "lego_part"."show_generic_part_msg", "lego_partcategory"."id", "lego_partcategory"."name", "lego_partcategory"."part_count", "lego_partcategory"."img", "lego_partcategory"."slug", "lego_partmaterial"."id", "lego_partmaterial"."name", "lego_partoverlay"."part_id", "lego_partoverlay"."length", "lego_partstats"."part_id", "lego_partstats"."num_sets", "lego_partstats"."num_mocs", "lego_partstats"."num_set_parts", "lego_partstats"."num_moc_parts", "lego_partstats"."y1", "lego_partstats"."y2", "lego_partstats"."is_dirty" FROM "lego_part" INNER JOIN "lego_partcategory" ON ("lego_part"."part_cat_id" = "lego_partcategory"."id") INNER JOIN "lego_partmaterial" ON ("lego_part"."part_material_id" = "lego_partmaterial"."id") LEFT OUTER JOIN "lego_partoverlay" ON ("lego_part"."id" = "lego_partoverlay"."part_id") LEFT OUTER JOIN "lego_partstats" ON ("lego_part"."id" = "lego_partstats"."part_id") WHERE ("lego_part"."is_active" AND "lego_part"."part_num" = '3003') LIMIT 21SELECT ••• FROM "lego_part" INNER JOIN "lego_partcategory" ON ("lego_part"."part_cat_id" = "lego_partcategory"."id") INNER JOIN "lego_partmaterial" ON ("lego_part"."part_material_id" = "lego_partmaterial"."id") LEFT OUTER JOIN "lego_partoverlay" ON ("lego_part"."id" = "lego_partoverlay"."part_id") LEFT OUTER JOIN "lego_partstats" ON ("lego_part"."id" = "lego_partstats"."part_id") WHERE ("lego_part"."is_active" AND "lego_part"."part_num" = '3003') LIMIT 21
0.55
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./lego/views/parts.py in download_files(847)
part_3003 = Part.objects.get(part_num='3003')
SELECT "lego_element"."id", "lego_element"."part_id", "lego_element"."color_id", "lego_element"."element_id", "lego_element"."design_id", "lego_element"."descr", "lego_element"."color_descr", "lego_element"."last_download_attempt", "lego_element"."num_download_attempts", "lego_element"."is_export_id", "lego_element"."is_active" FROM "lego_element" INNER JOIN "lego_color" ON ("lego_element"."color_id" = "lego_color"."id") WHERE ("lego_element"."is_active" AND "lego_element"."part_id" IN (147)) ORDER BY "lego_color"."name" ASC, "lego_element"."element_id" ASCSELECT ••• FROM "lego_element" INNER JOIN "lego_color" ON ("lego_element"."color_id" = "lego_color"."id") WHERE ("lego_element"."is_active" AND "lego_element"."part_id" IN (147)) ORDER BY "lego_color"."name" ASC, "lego_element"."element_id" ASC
0.42
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./lego/views/parts.py in download_files(847)
part_3003 = Part.objects.get(part_num='3003')
SELECT "lego_partcolorstats"."id", "lego_partcolorstats"."part_id", "lego_partcolorstats"."color_id", "lego_partcolorstats"."num_sets", "lego_partcolorstats"."num_mocs", "lego_partcolorstats"."num_set_parts", "lego_partcolorstats"."num_moc_parts", "lego_partcolorstats"."y1", "lego_partcolorstats"."y2", "lego_partcolorstats"."is_dirty", "lego_partcolorstats"."ignore_color_errors" FROM "lego_partcolorstats" WHERE "lego_partcolorstats"."part_id" IN (147)SELECT ••• FROM "lego_partcolorstats" WHERE "lego_partcolorstats"."part_id" IN (147)
0.28
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./lego/views/parts.py in download_files(847)
part_3003 = Part.objects.get(part_num='3003')
SELECT "lego_partcost"."id", "lego_partcost"."part_id", "lego_partcost"."color_id", "lego_partcost"."is_used", "lego_partcost"."cost_avg", "lego_partcost"."cost_min", "lego_partcost"."cost_max", "lego_partcost"."cost_count" FROM "lego_partcost" WHERE "lego_partcost"."part_id" IN (147)SELECT ••• FROM "lego_partcost" WHERE "lego_partcost"."part_id" IN (147)
0.22
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./lego/views/parts.py in download_files(847)
part_3003 = Part.objects.get(part_num='3003')
SELECT "lego_partphoto"."id", "lego_partphoto"."part_id", "lego_partphoto"."color_id", "lego_partphoto"."submitted_by_id", "lego_partphoto"."image", "lego_partphoto"."timestamp", "lego_partphoto"."is_active", "lego_partphoto"."is_primary" FROM "lego_partphoto" WHERE ("lego_partphoto"."is_active" AND "lego_partphoto"."part_id" IN (147))SELECT ••• FROM "lego_partphoto" WHERE ("lego_partphoto"."is_active" AND "lego_partphoto"."part_id" IN (147))
0.15
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./lego/views/parts.py in download_files(847)
part_3003 = Part.objects.get(part_num='3003')
SELECT "countries_plus_country"."iso", "countries_plus_country"."iso3", "countries_plus_country"."iso_numeric", "countries_plus_country"."fips", "countries_plus_country"."name", "countries_plus_country"."capital", "countries_plus_country"."area", "countries_plus_country"."population", "countries_plus_country"."continent", "countries_plus_country"."tld", "countries_plus_country"."currency_code", "countries_plus_country"."currency_symbol", "countries_plus_country"."currency_name", "countries_plus_country"."phone", "countries_plus_country"."postal_code_format", "countries_plus_country"."postal_code_regex", "countries_plus_country"."languages", "countries_plus_country"."geonameid", "countries_plus_country"."neighbours", "countries_plus_country"."equivalent_fips_code" FROM "countries_plus_country" WHERE "countries_plus_country"."iso" = 'US' LIMIT 21SELECT ••• FROM "countries_plus_country" WHERE "countries_plus_country"."iso" = 'US' LIMIT 21
0.25
Connection: default
Transaction status: Idle
/home/nathan/rb/site/./lego/views/parts.py in download_files(849)
return render(request, 'lego/downloads.html', {'downloads': downloads, 'images': images, 'part_3003': part_3003})/home/nathan/rb/site/./rb/templatetags/rb_geo.py in geo_currency(20)
geo_data = user.geo.get_user_currency()/home/nathan/rb/site/./geo/geo.py in get_user_currency(252)
country = Country.objects.get(iso=country_code)
412
</a>
413
</li>
414
<li class="hidden-xs">
415
{% geo_currency request.user %}
416
</li>
417
{% comment %}
418
<li class="hidden-xs hidden-sm">
419
<a href={% if request.user.is_authenticated %}"{% url 'user_profile_settings' request.user.get_username %}#personalisation"{% else %}"#" onclick="return false;"{% endif %} title="All date/times are being converted to this timezone">{% get_user_timezone request.user %}</a>