Use Mesh.bounds.size. This gives you the bounds in local space. Renderer.bounds gives you an axis-aligned bounding box so it's not as useful in most cases.
I've just done something similar, where I needed the width while the local scale was != 1.
I created two empty gameObject (let's call them "a" and "b" ) and made them children of my object. The first empty GO was placed at the center of the obect, the second one at one exetremity.
Then, w = Vector3.Distance( a.transform.position, b.transform.position );
That's the half of the width regardless of the scale, but it looks like that's what you need. I hope that help (and that's clear :x).