{"title":"Used Yamaha XSR900 Parts","description":"\u003cp\u003eGenuine used parts for the Yamaha XSR900, removed from real bikes and photographed individually. Condition graded, exact-item photos, fast UK delivery. One-off stock — when a part sells it's gone, but new XSR900 parts are added as bikes come in.\u003c\/p\u003e","products":[{"product_id":"oem-exhaust-silencer-can-for-yamaha-xsr900-2016-2020","title":"Yamaha XSR900 2016-2020 Exhaust Silencer \/ Can Genuine OEM","description":"\u003c!--\n  RRMoto — WEBSITE description template.\n\n  This file is the VERSION-CONTROLLED SOURCE. The live copy is the\n  description_template column on the \"default-website-template\" row in\n  listing_templates (edited in the admin at Settings → Listing templates).\n  Install it with:  npx tsx scripts\/set-website-description-template.mts --apply\n\n  It renders the SAME spec block as the redesigned product page section\n  (shopify-theme\/sections\/rrmoto-product.liquid), matched value for value —\n  paper ground, 9px mono labels on a 110px column, 12.5px Archivo values,\n  hairline rules, and the red-edged compatibility notice. Two differences are\n  deliberate: this is self-contained (it lands in Shopify's body_html, outside\n  the theme, so it cannot use the theme's CSS variables and hardcodes the\n  literals), and every selector is scoped under .rrd so it can never leak into\n  the theme.\n\n  Rows are in the SAME ORDER the product page renders them, so the two read\n  as one thing: PART, PART NO., CONDITION, REMOVED FROM, FITMENT, ALSO FITS,\n  WEIGHT, MADE IN.\n\n  Empty variables drop their whole row — no orphan labels, no empty rules.\n--\u003e\n\u003cdiv class=\"rrd\"\u003e\n  \u003cdiv class=\"rrd__head\"\u003e\n    \u003cspan class=\"rrd__cond\"\u003eCondition: \u003cb\u003eUsed\u003c\/b\u003e\u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rrd__specs\"\u003e\n    \u003cdiv class=\"rrd__spec\"\u003e\n\u003cspan class=\"rrd__k\"\u003ePART\u003c\/span\u003e\u003cspan class=\"rrd__v\"\u003eExhaust Silencer \/ Can\u003c\/span\u003e\n\u003c\/div\u003e\n    \n    \u003cdiv class=\"rrd__spec\"\u003e\n\u003cspan class=\"rrd__k\"\u003eCONDITION\u003c\/span\u003e\u003cspan class=\"rrd__v\"\u003eOEM part in used working condition with expected wear and tear.\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003cdiv class=\"rrd__spec\"\u003e\n\u003cspan class=\"rrd__k\"\u003eREMOVED FROM\u003c\/span\u003e\u003cspan class=\"rrd__v\"\u003eYamaha XSR900\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003cdiv class=\"rrd__spec\"\u003e\n\u003cspan class=\"rrd__k\"\u003eFITMENT\u003c\/span\u003e\u003cspan class=\"rrd__v\"\u003e2016-2020\u003c\/span\u003e\n\u003c\/div\u003e\n    \n    \n    \u003cdiv class=\"rrd__spec\"\u003e\n\u003cspan class=\"rrd__k\"\u003eMADE IN\u003c\/span\u003e\u003cspan class=\"rrd__v\"\u003eJapan\u003c\/span\u003e\n\u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"rrd__warn\"\u003e\u003cb\u003eCheck compatibility before purchasing\u003c\/b\u003e — the photographs form a critical part of the item description.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n  .rrd, .rrd * { box-sizing: border-box; }\n  .rrd {\n    background: #F4F2EE;\n    color: #111;\n    font-family: Archivo, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif;\n    \/* No padding by default: on the product page this sits inside the buy\n       column, which already carries the page inset, and an extra inset here\n       would indent the rows away from the price and buttons above them.\n       Standalone surfaces (the admin preview, Shopify's admin, a feed) add\n       their own — see .rrd--boxed below. *\/\n    padding: 0;\n    margin: 0;\n    \/* The product page renders this inside its buy column, which measures\n       523px at a 1440 viewport. Capping here keeps the block the same width\n       wherever else it is shown — the admin preview, Shopify's own admin, a\n       feed — instead of stretching to the full width of its container and\n       looking like a different design. *\/\n    max-width: 540px;\n  }\n\n  \/* NO brand lockup here by design: on the website this block sits inside a\n     page that already carries the RRMoto header, so a second logo is just\n     repetition. The eBay template keeps its lockup because that description\n     stands alone with no site around it. *\/\n  .rrd__head {\n    display: flex; justify-content: flex-end;\n    padding-bottom: 14px; border-bottom: 2px solid #111;\n  }\n  .rrd__cond {\n    font: 600 9px \"IBM Plex Mono\", ui-monospace, Menlo, Consolas, monospace;\n    letter-spacing: .1em; text-transform: uppercase; color: #fff;\n    background: #0A0A0B; padding: 5px 10px;\n  }\n  .rrd__cond b { color: #FF3B30; font-weight: 600; }\n\n  \/* Spec rows — matched to the product section's .rr-pd__spec \/ __k \/ __vv. *\/\n  .rrd__specs { display: flex; flex-direction: column; margin-top: 4px; }\n  .rrd__spec { display: flex; align-items: baseline; gap: 10px; padding: 9px 0; border-bottom: 1px solid #E4E1DA; }\n  .rrd__spec:last-child { border-bottom: 0; }\n  .rrd__k { font: 600 9px \"IBM Plex Mono\", ui-monospace, Menlo, Consolas, monospace; letter-spacing: .08em; color: #888; width: 110px; flex: none; }\n  .rrd__v { font: 600 12.5px\/1.5 Archivo, Helvetica, Arial, sans-serif; color: #111; min-width: 0; }\n\n  .rrd__warn {\n    background: #FBEAE9; border-left: 3px solid #E10600;\n    padding: 13px 15px; margin: 20px 0 0;\n    font: 400 12px\/1.5 Archivo, Helvetica, Arial, sans-serif; color: #7A1512;\n  }\n  .rrd__warn b { font-weight: 700; }\n\n  \/* Standalone: anywhere this is shown OUTSIDE the product page it needs its\n     own frame — the admin preview, Shopify's admin, a feed. *\/\n  .rrd--boxed { padding: 20px 22px 22px; background: #F4F2EE; }\n\n  @media (max-width: 600px) {\n    .rrd--boxed { padding: 16px; }\n    \/* The 110px label column leaves too little for the value on a phone, so\n       the row stacks rather than squeezing. *\/\n    .rrd__spec { flex-direction: column; gap: 3px; }\n    .rrd__k { width: auto; }\n  }\n\u003c\/style\u003e","brand":"Yamaha","offers":[{"title":"Default Title","offer_id":58821730599237,"sku":"2D-2","price":71.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1074\/4558\/4197\/files\/cmsngrekh000609krnaknbvtf.jpg?v=1786380454"},{"product_id":"yamaha-xsr900-2016-2021-left-mirror-genuine-oem","title":"Yamaha XSR900 2016-2021 Left Mirror Genuine OEM","description":"\u003c!--\n  RRMoto — WEBSITE description template.\n\n  This file is the VERSION-CONTROLLED SOURCE. The live copy is the\n  description_template column on the \"default-website-template\" row in\n  listing_templates (edited in the admin at Settings → Listing templates).\n  Install it with:  npx tsx scripts\/set-website-description-template.mts --apply\n\n  It renders the SAME spec block as the redesigned product page section\n  (shopify-theme\/sections\/rrmoto-product.liquid), matched value for value —\n  paper ground, 9px mono labels on a 110px column, 12.5px Archivo values,\n  hairline rules, and the red-edged compatibility notice. Two differences are\n  deliberate: this is self-contained (it lands in Shopify's body_html, outside\n  the theme, so it cannot use the theme's CSS variables and hardcodes the\n  literals), and every selector is scoped under .rrd so it can never leak into\n  the theme.\n\n  Rows are in the SAME ORDER the product page renders them, so the two read\n  as one thing: PART, PART NO., CONDITION, REMOVED FROM, FITMENT, ALSO FITS,\n  WEIGHT, MADE IN.\n\n  Empty variables drop their whole row — no orphan labels, no empty rules.\n--\u003e\n\u003cdiv class=\"rrd\"\u003e\n  \u003cdiv class=\"rrd__head\"\u003e\n    \u003cspan class=\"rrd__cond\"\u003eCondition: \u003cb\u003eUsed\u003c\/b\u003e\u003c\/span\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rrd__specs\"\u003e\n    \u003cdiv class=\"rrd__spec\"\u003e\n\u003cspan class=\"rrd__k\"\u003ePART\u003c\/span\u003e\u003cspan class=\"rrd__v\"\u003eLeft Mirror\u003c\/span\u003e\n\u003c\/div\u003e\n    \n    \u003cdiv class=\"rrd__spec\"\u003e\n\u003cspan class=\"rrd__k\"\u003eCONDITION\u003c\/span\u003e\u003cspan class=\"rrd__v\"\u003eOEM part in used working condition with expected wear and tear.\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003cdiv class=\"rrd__spec\"\u003e\n\u003cspan class=\"rrd__k\"\u003eREMOVED FROM\u003c\/span\u003e\u003cspan class=\"rrd__v\"\u003eYamaha XSR900\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003cdiv class=\"rrd__spec\"\u003e\n\u003cspan class=\"rrd__k\"\u003eFITMENT\u003c\/span\u003e\u003cspan class=\"rrd__v\"\u003e2016-2021\u003c\/span\u003e\n\u003c\/div\u003e\n    \n    \u003cdiv class=\"rrd__spec\"\u003e\n\u003cspan class=\"rrd__k\"\u003eWEIGHT\u003c\/span\u003e\u003cspan class=\"rrd__v\"\u003e1.0 kg\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003cdiv class=\"rrd__spec\"\u003e\n\u003cspan class=\"rrd__k\"\u003eMADE IN\u003c\/span\u003e\u003cspan class=\"rrd__v\"\u003eJapan\u003c\/span\u003e\n\u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"rrd__warn\"\u003e\u003cb\u003eCheck compatibility before purchasing\u003c\/b\u003e — the photographs form a critical part of the item description.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n  .rrd, .rrd * { box-sizing: border-box; }\n  .rrd {\n    background: #F4F2EE;\n    color: #111;\n    font-family: Archivo, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif;\n    \/* No padding by default: on the product page this sits inside the buy\n       column, which already carries the page inset, and an extra inset here\n       would indent the rows away from the price and buttons above them.\n       Standalone surfaces (the admin preview, Shopify's admin, a feed) add\n       their own — see .rrd--boxed below. *\/\n    padding: 0;\n    margin: 0;\n    \/* The product page renders this inside its buy column, which measures\n       523px at a 1440 viewport. Capping here keeps the block the same width\n       wherever else it is shown — the admin preview, Shopify's own admin, a\n       feed — instead of stretching to the full width of its container and\n       looking like a different design. *\/\n    max-width: 540px;\n  }\n\n  \/* NO brand lockup here by design: on the website this block sits inside a\n     page that already carries the RRMoto header, so a second logo is just\n     repetition. The eBay template keeps its lockup because that description\n     stands alone with no site around it. *\/\n  .rrd__head {\n    display: flex; justify-content: flex-end;\n    padding-bottom: 14px; border-bottom: 2px solid #111;\n  }\n  .rrd__cond {\n    font: 600 9px \"IBM Plex Mono\", ui-monospace, Menlo, Consolas, monospace;\n    letter-spacing: .1em; text-transform: uppercase; color: #fff;\n    background: #0A0A0B; padding: 5px 10px;\n  }\n  .rrd__cond b { color: #FF3B30; font-weight: 600; }\n\n  \/* Spec rows — matched to the product section's .rr-pd__spec \/ __k \/ __vv. *\/\n  .rrd__specs { display: flex; flex-direction: column; margin-top: 4px; }\n  .rrd__spec { display: flex; align-items: baseline; gap: 10px; padding: 9px 0; border-bottom: 1px solid #E4E1DA; }\n  .rrd__spec:last-child { border-bottom: 0; }\n  .rrd__k { font: 600 9px \"IBM Plex Mono\", ui-monospace, Menlo, Consolas, monospace; letter-spacing: .08em; color: #888; width: 110px; flex: none; }\n  .rrd__v { font: 600 12.5px\/1.5 Archivo, Helvetica, Arial, sans-serif; color: #111; min-width: 0; }\n\n  .rrd__warn {\n    background: #FBEAE9; border-left: 3px solid #E10600;\n    padding: 13px 15px; margin: 20px 0 0;\n    font: 400 12px\/1.5 Archivo, Helvetica, Arial, sans-serif; color: #7A1512;\n  }\n  .rrd__warn b { font-weight: 700; }\n\n  \/* Standalone: anywhere this is shown OUTSIDE the product page it needs its\n     own frame — the admin preview, Shopify's admin, a feed. *\/\n  .rrd--boxed { padding: 20px 22px 22px; background: #F4F2EE; }\n\n  @media (max-width: 600px) {\n    .rrd--boxed { padding: 16px; }\n    \/* The 110px label column leaves too little for the value on a phone, so\n       the row stacks rather than squeezing. *\/\n    .rrd__spec { flex-direction: column; gap: 3px; }\n    .rrd__k { width: auto; }\n  }\n\u003c\/style\u003e","brand":"Yamaha","offers":[{"title":"Default Title","offer_id":59118869446981,"sku":"1A-2","price":17.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1074\/4558\/4197\/files\/cmtn0udff000c04jv9qwww933.jpg?v=1788530553"}],"url":"https:\/\/rrmoto.co.uk\/collections\/used-yamaha-xsr900-parts.oembed","provider":"RRMoto","version":"1.0","type":"link"}