For AdRavage.com I use a combination of Magpie RSS (to extract the data returned from searches) and a custom screen scraping class to properly populate the city/category information used when building searches.
For example, to extract the categories you could:
//scrape category data
$h = new http();
$h->dir = "../cache/";
$url = "http://craigslist.org/";
if (!$h->fetch($url, 300)) {
echo "There is a problem with the http request!
";
exit();
}
//we need to get all category abbreviations (data looks like: