v1 API
Introduction
Version 1.0 of the Oodle API is an XML-RPC web service. It is still in use today serving dozens of API partners, but we have recently introduced a second "version 2" Oodle API, which is REST-based. This page of documentation covers the version 1 XML-RPC API.
XML-RPC is a method for making web service calls in which you:- Define a method name and a set of method parameters
- Encode everything into an XML document that matches the XML-RPC spec
- Send that XML document in the body of an HTTP "POST" request to an XML-RPC endpoint
In our case, the Oodle XML-RPC endpoint is:
http://api.oodle.com/api/
It's Just an HTTP Web Service - So Use Any Language or Platform You Want
Since the Oodle API is just a web service, you can use any platform or language you'd like to create your application. All major application development platforms support the basic ability to make HTTP calls and that's the only technical requirement to do Oodle API development.
In all cases, however, your application source code should:
- Create an XML-RPC client
- Set a method name of "get"
- Set up a hash of method parameters for the "get" method (e.g. your API key, search keywords, zip code, etc.)
- Encode everything into an XML-RPC request
- Send that request to http://api.oodle.com/api in an HTTP POST request
- Do something with the response it gets back
If things are still unclear, see the XML-RPC spec, which has an example XML-RPC request and response.
Use an XML-RPC Client Library To Make Things Easy
We highly recommend that you use an XML-RPC client library in your implementation. This will make your implementation much, much easier. These libraries handle details such as properly encoding the parameters into XML-RPC format, constructing the body of the HTTP request, etc. Open source XML-RPC client libraries are widely available for all major languages, including C/C++, Java, PHP, Perl, and Python. See our FAQ for more information on finding an XML-RPC client library for your platform.
4000 Results Maximum
Very important: Our API will only return the first 4000 results from any given search. If you need more, you'll have to break your query up into several sub-queries, each of which return less than 4000 results.
Documentation Format
To make this document easier to read, examples will use the following conventions instead of the XML-RPC syntax.
- XML-RPC strings will be shows in single quotes.
- XML-RPC 'structs' will be enclosed in curly bracket characters. The following example shows a 'struct' with the key fruit equal to apple, and color equal to green.
{ fruit => 'apple', color => 'green' } - XML-RPC arrays will be enclosed in square bracket characters. The following example shows an array with three apple types:
[ 'Red Delicious', 'Granny Smith', 'Pink Lady' ]
- Comments will be prefixed with #
Methods
"get"
The get method is the primary way to fetch listings from the Oodle API.
Input Parameters
The method takes one parameter -- a hash containing multiple keys:
partner_id
String. Required. This is the API key that was assigned to you by Oodle. It must be included with every request.
region
String. Required. A region is a metro area or an entire country. Each Oodle region has a unique string. See the current list on the Regions List page.
q
String. Optional. The query, or list of keywords, that must be present. A limited amount of stemming is applied. Additionally:
- The "+" modifier is accepted, but ignored.
- The "-" or "NOT" operator is used to require that the modified keyword does not appear.
- The "OR" operator allows a logical OR between keywords.
- Parantheses can be used for grouping terms.
- The double-quote character can be used for phrase matching.
from
Integer. Optional. Declares the start index of the result set. 0-based index.
to
Integer. Optional. Declares the end index of the result set. 0-based index.
category
String. Optional. The category argument is a string representing the category code. The given category and all sub-categories will be searched. See the current list on the Categories List page. Using the empty string represents the root, and all sub-categories will be searched.
dimensions
Array of strings. Optional. This parameter is used to refine your query in the same that you would on the Oodle web site using the navigators in the left rail. For example: by color, make, model, whether the listing has a thumbnail or not, etc. See the current list on the Dimensions List page. Note that "dimensions" are passed back to you in the "refinements" block of every response. This allows you to easily offer a multi-step search refinement experience, similar to the Oodle web site, if you so desire.
filters
Array of structs. Optional. Another way to filter the results on your query. Each filter is a struct:
type- a string representing a filter, e.g. 'price'params- an array of parameters for that type, e.g. 'low', 'high'Possible values for 'type' are:
create_timedistancepricesourceboundingboxPossible values for 'params' will vary by filter type. Note that "filters" is an array of individual filter structs - this means that you can have multiple filters on each query. See examples below for more information.
sort
Struct. Optional. Describes how the result listings should be sorted. A sort is a struct:
key- one of the strings from the list above, e.g. 'distance'reverse- an optional boolean, can be added to reverse the sort order, e.g. TRUEPossible 'key' values include:
distancenormalpricecreate_timeeventdate
location
Struct. Optional. Free-form text for a location causing a search through our location database. Alternately, a location ID (e.g. 'usa_tx_austin') may be passed in if that is known.
return_nav
Boolean. Optional. Declares whether to return the navigational refinements. (See "Refinements" below.)
assisted_search
Boolean. Optional. If you have many Oodle API requests with a keyword query term, but no category, you may wish to set assisted_search to TRUE. If set to TRUE, Oodle performs some additional processing on the query term to attempt to automatically determine the category for you. In this case, the relevance of the results will likely improve, but you may notice slightly longer response times from the Oodle API as we perform that processing. Default is FALSE.
Input Parameters - Some Examples
"dimensions"
An array of dimension values is passed in as such:
[
'make_ford',
'model_explorer',
'has_photo_thumbnail',
'color_blue'
]
"filters"
create_time - Listings added to our system during a certain time period. Times are in epoch seconds.
{
type => 'create_time',
params => {
low => 1156453260,
high => 1156453200
}
}
distance - Within a given distance of a zip code.
{
type => 'distance',
params => {
value => 30,
units => 'mi',
zip => '94105',
country_code => 'USA' # optional - will default to USA
}
}
distance - Within a given distance of a postal code in UK
{
type => 'distance',
params => {
value => 15,
units => 'km',
zip => 'L69 7ZP',
country_code => 'GBR'
}
}
distance - Within a given distance of a lat/long pair.
{
type => 'distance',
params => {
value => 100,
units => 'mi',
latitude => 46.6072,
longitude => -120.621
}
}
price - Listings within a certain price range.
{
type => 'price',
params => {
low => 10,
high => 30
}
}
source - Exclude listings from particular source(s), e.g. ebay and backpage:
{
type => 'source',
params => {
exclude => [ 'ebay', 'backpage' ]
}
}
boundingbox - Include listings within a particular lat/lon rectangle. The four parameters are [SW Lat, SW Lon, NE Lat, NE Lon].
{
type => 'boundingbox',
params => {
swLat => 30.949,
swLon => -99.842,
neLat => 34.641,
neLon => -93.746
}
}
"location"
Pass in country code + free form text:
{
country_code => 'USA',
text => 'Austin' # this is the user's free-form text
}
In the UK, the country_code will be "GBR":
{
country_code => 'GBR',
text => 'London'
}
Or, when the location id is known, this is preferred:
{
id => 'usa_tx_austin'
}
"sort"
price - Sort listings by price, lowest to highest.
{
key => 'price'
}
price using "reverse" - Sort listings by price, highest to lowest.
{
key => 'price',
reverse => true
}
distance - Sort listings by distance away from the location, nearest ones first.
{
key => 'distance'
}
distance using "reverse" - Sort listings by distance from the location, nearest ones last.
{
key => 'distance',
reverse => true
}
Response
The response on the "get" request will be a hash structure containing up to 5 top level items:
| Key | Data Type | Description |
total |
string | Total number of listings Oodle has for your query |
items |
array of hashes | Array of listings |
current |
hash | Parsed representation of your query, if available |
refinements |
hash | Additional refinements. Will be returned to you ONLY if you set "return_nav" = TRUE. |
suggestions |
hash | Additional location suggestions, if available |
Here is the full response data structure:
{
/***********************
* "total"
* The total number of listings Oodle has for your query.
***********************/
'total' => (string),
/***********************
* "items"
* Array of Oodle listings. Note that the structure of each
* item will vary slightly depending on the category of the item. For example,
* "Make" and "Model" appear in vehicles listings, but not in job listings
***********************/
'items' => (array of hashes)
[
{
'title' => (string), # listing title
'sbody' => (string), # full listing body (if available)
'body' => (string), # short listing body snippet (if available)
'source' => (string), # name of site where full listing is located
'category_name' => (string), # category name (e.g. 'Cars & Vehicles')
'category_attr' => (string), # location in Oodle category tree (e.g. 'vehicle/car')
'id' => (string), # Oodle listing ID number
'url' => (string), # Oodle listing click URL
'create_time' => (string), # listing creation time (epoch seconds)
'paid' => (boolean), # see "Paid Listings" section below
'revenue_score' => (string), # see "Paid Listings" section below
# THERE ARE *MANY* OTHER OPTIONAL FIELDS THAT MAY SHOW UP, INCLUDING:
'price' => (string), # price of item
'registration' => (string), # is registration required at source site?
'thumb' => (string), # thumbnail image URL
'image_width' => (string), # width of thumbnail image (in pixels)
'image_height' => (string), # height of thumbnail image (in pixels)
'color' => (string), # color of item
'year' => (string), # year of item
'latitude' => (string), # decimal latitude of item (e.g. 37.5382996)
'longitude' => (string), # decimal longitude of item (e.g. -122.3039017)
'zipcode' => (string), # postal code for location of item
'location' => (string), # general descriptive name for location of item
'locationcity' => (string), # city name for location of item
'privateparty' => (string) # item sold by private party individual?
}
],
/***********************
* "current"
* This will only exist if your query is more than a simple keyword + region.
* Note that this structure will change depending on your incoming query.
* For example, if you didn't set any dimensions on your incoming query, that won't be here.
* Here is an example for a Honda vehicles API query near Los Angeles, CA:
***********************/
'current' => (hash)
{
'category' => (array of hashes)
[
{
'name' => (string), # category full name (e.g. "Cars")
'abbrev' => (string), # category short name (e.g. "Cars")
'id' => (string), # category id (e.g. "vehicle")
'url' => (string) # Oodle url path for category (e.g. "vehicle")
},
{
'name' => (string), # category full name (e.g. "Cars & Vehicles)
'abbrev' => (string), # category short name (e.g. "Cars")
'id' => (string), # category id (e.g. "vehicle/car")
'url' => (string) # Oodle url path for category (e.g. "vehicle/car")
}
],
'dimension' => (array of hashes)
[
{
'name' => (string), # dimension name (e.g. "Make")
'value' => (string), # dimension value (e.g. "Honda")
'id' => (string) # dimension id (e.g. "make_honda")
}
],
'filter' => (array of hashes)
[
{
'type' => (string), # (e.g. "distance")
'params' => (hash)
{
value => (string), # (e.g. "30")
units => (string), # (e.g. "mi")
zip => (string) # (e.g. "90210")
}
},
{
'type' => (string), # (e.g. "price")
'params' => (hash)
{
'low' => (string), # (e.g. "15000")
'high' => (string) # (e.g. "25000")
}
}
],
'location' => (hash)
{
'name' => (string), # location name (e.g. "Los Angeles")
'state' => (string), # location state name (e.g. "CA")
'id' => (string) # Oodle location ID (e.g. "usa_ca_losangeles")
}
},
/***********************
* "refinements"
* The refinements structure **will change** depending on your incoming query.
* Here is an example refinement set for the vehicles API query we just used above.
***********************/
'refinements' => (hash)
{
'category' => (array of hashes)
[
{
'name' => (string), # refinement category name (e.g. "Cars")
'id' => (string), # refinement category id (e.g. "vehicle")
'count' => (string) # num of listings in suggested refinement (e.g. "6612")
}
],
'dimension' => (array of hashes)
[
{
'name' => (string), # dimension refinement name (e.g. "Make")
'values' => (array of hashes)
[
{
'name' => (string), # refinement dimension value (e.g. "Toyota")
'id' => (string), # refinement dimension id (e.g. "make_toyota")
'count' => (string) # num of listings in suggested refinement (e.g. 9745)
}
]
}
]
},
/***********************
* "suggestions"
* If you submitted a common city name (one that exists in many states), you
* will likely receive this "suggestions" hash which will provide you with a
* full list of complete location suggestions. Here's an example below for
* location: "Austin", Region: "usa", a city name found in many states.
***********************/
'suggestions' => (hash)
{
'location' => (array of hashes)
[
{
'name' => (string), # location city name (e.g. "Austin")
'state' => (string), # location state abbreviation (e.g. "MN")
'id' => (string) # Oodle location ID (e.g. "usa_mn_austin")
},
{
'name' => (string), # location city name (e.g. "Austin")
'state' => (string), # location state abbreviation (e.g. "TX")
'id' => (string) # Oodle location ID (e.g. "usa_tx_austin")
}
]
}
}
Paid Listings

On Oodle.com, you'll sometimes see listings that are marked as "Featured" (see screenshot above). These are listings that have received a boost within the search results because they are part of our Paid Inclusion Program.
We also specify which listings are "paid" within our API response. Clicks on these listings can generate revenue for you if you are part of our API Affiliate Program.
Specifically, on each item within the API response, you'll see two values of interest:
| Key | Data Type | Description |
paid |
boolean | TRUE if the listing is paid/featured, FALSE if it is not. |
revenue_score |
integer | A value between 0 and 10. Higher values indicate that the listing has a higher eCPC associated with it in our Paid Inclusion Program. |
"get_top_categories"
The "get_top_categories" method returns all top-level categories.
Input Parameters
None.
Response
The response is an array of Oodle's top-level categories, for example:
(
(
[id] => vehicle
[name] => Cars & Vehicles
),
(
[id] => housing/sale
[name] => Real Estate
),
(
[id] => housing/rent
[name] => Property For Rent
),
(
[id] => job
[name] => Jobs
),
(
[id] => sale/pet
[name] => Pets
),
(
[id] => sale
[name] => Items for Sale
),
(
[id] => sale/tickets
[name] => Tickets
),
(
[id] => personals
[name] => Personals
),
(
[id] => service
[name] => Services
)
)
Sample Code
PHP
PHP5 Example Using PEAR to Make XML-RPC Easy
For the XML-RPC functionality in our sample code, we'll be using the PEAR XML-RPC package. PEAR is an incredibly helpful library of PHP packages that you can install on top of your standard PHP setup.
- For more information on PEAR, see this PEAR Introduction.
- See our FAQ for more information on how to install the PEAR XML-RPC package with PEAR.
Oodle API PHP5 Class
Abstracting the Oodle API connection details away into a separate file will make things much easier for you. It'll make your code cleaner and it will make our sample code here cleaner as well. Fortunately, if you're using PHP5, we've already created an Oodle API PHP5 class that you are free to use:
Sample API Request
Let's get started with a simple query. We'll query for "2006 Toyota Prius" in the "San Francisco" region. To do that, call the get() method and pass in the following parameters:
{
partner_id = 'TEST',
region = 'sf',
q = '2006 Toyota Prius'
}
Code
<?php
// use the Oodle API PHP5 class
require_once('oodle_api_php5.php');
// instantiate a new OodleApi object from that class
$oodleApi = new OodleApi();
// prepare a "get()" method call to the Oodle API
$method = 'get';
$params = array(
'partner_id' => 'TEST',
'region' => 'sf',
'q' => '2006 Toyota Prius'
);
// make the request
$listings = $oodleApi->make_request($method,$params);
// use PHP's "print_r" to dump the entire data structure we got back
print_r($listings);
?>
That's it! Just a dozen lines or so of actual code.
Sample API Response
The response to the Oodle API call above will contain:
- "items" - an array of items that match the query
- "total" - an integer representing how many total results Oodle has for that query
Here's how it might look:
Array
(
[items] => Array
(
[0] => Array
(
[title] => 2006 TOYOTA PRIUS Mileage 16341
[location] => Hayward
[zipcode] => 94544
[color] => Grey
[condition] => Used
[make] => Toyota
[mileage] => 16341
[model] => Prius
[price] => 23981.0
[privateparty] => 0
[sellertype] => Dealer
[year] => 2006
[itemlocation] => usa_ca_hayward
[url] => http://www.oodle.com/rx/536639749-648p454-...
[source] => AutoGuide.com
[category_attr] => vehicle/car
[category_name] => Cars
[id] => 536639749
[thumb] => http://oodleimg.com/item/536639749_1s.jpg
[image_width] => 112
[image_height] => 84
[image_alt] => 2006 TOYOTA PRIUS Mileage 1634
[create_time] => 1183013747
[has_photo] => Thumbnail
[latitude] => 37.6338005
[longitude] => -122.0618973
[paid] => 1
)
[1] => Array
(
[title] => 2006 Toyota Prius
[body] => 2006 TOYOTA PRIUS HYBRID, ac, ps, pdl, cc, ...
[location] => Santa Clara
[zipcode] => 95054
[condition] => Used
[make] => Toyota
...
)
)
[total] => 27
}
Clearly the response above is just a dump of the data, but you can see what's going on -- in this case, it's an array of items. Each individual element of the array represents a single listing. Listings come with a rich hash of listing data.
It wouldn't take much work at all to layer a UI on top of this data, but we'll leave that up to you and the custom needs for your project!
The goal here is demonstrate that you can request listings from the Oodle API with just a small chunk of code. It's really quite simple once you get the XML-RPC plumbing working, and even that isn't too tough.
Build Up From There!
In the example above, we only sent in three parameters:
{
partner_id = 'YOUR-API-KEY',
region = 'sf',
q = '2006 Toyota Prius'
}
You can do much more complex queries by passing in more parameters on the get() call -- for example, you could:
- use dimensions to limit by a certain color
- use filters to pare down by a specific price range
- sort the listings by create time or by distance from a particular location
Java
A short chunk of Java sample code below demonstrates how to fetch listings from the Oodle API.
In the sample code, we do the following:- Assemble the parameters in a HashMap
- Create the XmlRpcClient object
- Execute the XmlRpcClient call with that parameter set
- Print the hierarchical response data structure using some recursion
Note: To run the sample code below, you will need the following Java libraries. Ensure that the .JAR files for these libraries are in your classpath:
- xmlrpc-client
- xmlrpc-common
- ws-commons-util
- commons-httpclient-3.0
- commons-logging
- commons-codec-1.3
Sample Code
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
import org.apache.xmlrpc.client.XmlRpcCommonsTransportFactory;
public class OodleApi
{
/**
* Creates the hash of parameters for the Oodle API's "get" method.
* Keys are all strings. Values may be strings, arrays, booleans...
* http://developer.oodle.com/get has full list of parameters.
* @return Parameter hash ready to be sent by XmlRpcClient
*/
public static Object[] setupMethodParams()
{
HashMap map = new HashMap();
map.put("partner_id", "TEST"); // Your API key goes here!
map.put("region", "chicago"); // 'region' is a string (required)
map.put("category", "vehicle"); // 'category' is a string (optional)
map.put("from", 1); // from: listing #1 (optional)
map.put("to", 5); // to: listing #5 (optional)
// "dimensions" is an array of strings (optional)
String[] dimensions = { "make_honda", "model_civic" };
map.put("dimensions", dimensions);
return new Object[] { map };
}
/**
* Send the XML-RPC request to the Oodle API.
* @param methodParams Hash of method parameters from setupMethodParams()
* @return The body of the Oodle API's XML-RPC response
*/
public static Map getResponse(Object[] methodParams) throws Exception
{
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL("http://api.oodle.com:80/api"));
XmlRpcClient client = new XmlRpcClient();
client.setTransportFactory(new XmlRpcCommonsTransportFactory(client));
client.setConfig(config);
return (Map) client.execute("get", methodParams);
}
private static void print(Object object, String indent)
{
if (object instanceof String)
{
System.out.println("'" + object + "'");
}
else if (object instanceof Number)
{
System.out.println(object);
}
else if (object instanceof Boolean)
{
System.out.println(object.toString().toUpperCase() + " (boolean)");
}
else if (object instanceof Map)
{
print((Map) object, indent);
}
else if (object instanceof Object[])
{
print((Object[]) object, indent);
}
}
private static void print(Object[] list, String indent)
{
System.out.println();
System.out.println(indent + "[");
String newIndent = "\t" + indent;
for(Object obj : list)
{
print(obj, newIndent);
}
System.out.println(indent + "]");
}
private static void print(Map map, String indent)
{
System.out.println();
System.out.println(indent + "{");
String newIndent = "\t" + indent;
for(Object key: map.keySet())
{
System.out.print(newIndent + key + " => ");
print(map.get(key), newIndent);
}
System.out.println(indent + "}");
}
/**
* Setup Oodle API "get" method params, send request, print response.
*/
public static void main(String[] args)
{
Object[] methodParams = setupMethodParams();
try
{
Map response = getResponse(methodParams);
print(response, "");
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
Sample Output
{
total => 2187
current =>
{
dimension =>
[
{
value => 'Honda'
name => 'Make'
id => 'make_honda'
}
{
value => 'Civic'
name => 'Model'
id => 'model_civic'
}
]
category =>
[
{
url => 'vehicle'
name => 'Cars & Vehicles'
id => 'vehicle'
abbrev => 'Cars'
}
]
}
items =>
[
{
create_time => 1201709083
title => '2008 Honda Civic Grey'
trim => 'trim_lx:LX'
privateparty => '0'
paid => TRUE (boolean)
condition => 'New'
id => '745248433'
longitude => '-88.0775986'
sbody => 'Driver Air Bag, Passenger Air Bag'
image_height => '84'
price => '18395.0'
locationcity => 'Lisle'
thumb => 'http://i.oodleimg.com/item/745248433_1s.jpg?1201712361'
url => 'http://www.oodle.com/rx/745248433-1365p1025-TEST/www.automart.com/vehicledetail/adid-77299274/?CMP=KNC-Oodle&WT.srch=1&WT.mc_id=Oodle'
location => 'Lisle'
registration => '0'
has_photo => 'Thumbnail'
make => 'Honda'
image_alt => '2008 Honda Civic Grey'
color => 'Grey'
year => '2008'
category_attr => 'vehicle/car/sedan'
mileage => '0'
category_name => 'Sedans'
model => 'Civic'
latitude => '41.8051987'
sellertype => 'Dealer'
source => 'Honda of Lisle (AutoMart.com)'
zipcode => '60532'
image_width => '112'
}
{
create_time => 1201697815
title => '2008 Honda Civic Grey'
trim => 'trim_hybrid:Hybrid'
privateparty => '0'
paid => TRUE (boolean)
condition => 'New'
id => '745134264'
longitude => '-88.0775986'
sbody => 'Power Passenger Mirror, Vehicle Anti-Theft System'
image_height => '84'
price => '23235.0'
locationcity => 'Lisle'
thumb => 'http://i.oodleimg.com/item/745134264_1s.jpg?1201700580'
url => 'http://www.oodle.com/rx/745134264-1365p1025-TEST/www.automart.com/vehicledetail/adid-77146350/?CMP=KNC-Oodle&WT.srch=1&WT.mc_id=Oodle'
location => 'Lisle'
registration => '0'
has_photo => 'Thumbnail'
make => 'Honda'
image_alt => '2008 Honda Civic Grey'
color => 'Grey'
year => '2008'
category_attr => 'vehicle/car/sedan'
mileage => '0'
category_name => 'Sedans'
model => 'Civic'
latitude => '41.8051987'
sellertype => 'Dealer'
source => 'Honda of Lisle (AutoMart.com)'
zipcode => '60532'
image_width => '112'
}
{
create_time => 1201702864
title => '2008 Honda Civic Lx'
trim => 'trim_lx:LX'
sellername => 'Mcgrath Honda Of St Charles'
privateparty => '0'
paid => FALSE (boolean)
condition => 'New'
id => '745227261'
longitude => '-88.2987976'
sbody => '12V Power Outlet: Front And 1 13.2 Gallon Main Unleaded Fuel Tank'
image_height => '84'
price => '17595.0'
locationcity => 'Saint Charles'
thumb => 'http://i.oodleimg.com/item/745227261_1s.jpg?1201706598'
url => 'http://www.oodle.com/rx/745227261-122u1025-TEST/www.drivechicago.com/heart.php?setsub=3725&vehicle_id=257158'
location => 'St. Charles'
registration => '0'
has_photo => 'Thumbnail'
make => 'Honda'
image_alt => '2008 Honda Civic Lx'
year => '2008'
category_attr => 'vehicle/car/sedan'
category_name => 'Sedans'
model => 'Civic'
latitude => '41.9173012'
sellertype => 'Dealer'
source => 'Mcgrath Honda Of St Charles (DriveChicago.com)'
zipcode => '60174'
image_width => '112'
}
{
create_time => 1201699886
title => '2008 Honda Civic Hybrid 4dr Sdn'
trim => 'trim_hybrid:Hybrid'
privateparty => '0'
paid => TRUE (boolean)
condition => 'New'
id => '745152518'
longitude => '-87.9338989'
price => '23235.0'
locationcity => 'Gurnee'
url => 'http://www.oodle.com/rx/745152518-450p1025-TEST/www.vehix.com/SearchEngineMarketing.redirector?zip=60031&make=Honda&model=Civic%20Hybrid&year=2008&inventoryid=77000000D70BC7&To=Inventory%20Details&Vendor=Oodle&cid=49'
location => 'Gurnee'
registration => '0'
has_photo => 'No'
make => 'Honda'
color => 'Blue'
year => '2008'
category_attr => 'vehicle/car/sedan'
mileage => '11'
category_name => 'Sedans'
model => 'Civic'
sellertype => 'Dealer'
latitude => '42.3742981'
source => 'Rosen Honda (Vehix.com)'
zipcode => '60031'
}
]
}
.NET
At this time, we do not have any sample code for .NET. But we have found the following .NET tutorials to be generally helpful:
- XML-RPC.net (a very good libary to use for making XML-RPC requests in .NET!)
- C# XML-RPC
- Creating an XML-RPC Client in ASP.net
