Bulk Upload Header

Backpage.com Bulk Upload Format

Contents:

Introduction

If you have an existing RSS feed on your site in place and understand the basics of RSS and its syntax, you can easily migrate to Backpage.com's RSS feed format.

It is important to note the basic differences between RSS 1.0 and RSS 2.0, and to determine which version you are using. For information on these, please see the following sites:
  www.rssfeeds.com
  W3C RSS Tutorial

We begin with a basic formatting and will add some custom fields later in the example:

RSS 1.0 Example

<?xml version="1.0"?>
<rdf:RDF xmlns="http://purl.org/rss/1.0/"
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:backpage="http://www.backpage.com/rss/1.0"
>

  <channel>
    <items>
    <rdf:li rdf:resource="155213"/>
    <rdf:li rdf:resource="155214"/>
    
</items>

    <backpage:import user="myname@mydomain.com"
                     site="http://newyork.backpage.com" /
>
  
</channel>
  <item rdf:about = "155213">
    <backpage:id>155213
</backpage:id>
    <backpage:category>ApartmentsForRent</backpage:category>
    <backpage:replyEmail>advertiser1@myDomain.com</backpage:replyEmail>
    <backpage:allowReplies>No</backpage:allowReplies>
    <backpage:superRegion>Manhattan</backpage:superRegion>
    <backpage:region>New York City</backpage:region>
    <backpage:adPlacedBy>Agency/Locator Service</backpage:adPlacedBy>
    <backpage:feeStatus>Fee</backpage:feeStatus>
    <backpage:bedrooms>2</backpage:bedrooms>
    <backpage:price>345.66</backpage:price>
    <backpage:mapAddress>202 Mockingbird Lane</backpage:mapAddress>
    <backpage:mapZip>85716</backpage:mapZip>  

    <title>OPEN HOUSE! UNDERPRICED 1BD/1BA/RENOVATED!</title>
    <description><![CDATA[
      Ad copy here...
    ]]
>
</description>
  </item>
  <item rdf:about = "155214">
    <backpage:id>155214
</backpage:id>
    <backpage:category>ApartmentsForRent</backpage:category>
    <backpage:replyEmail>advertiser2@myDomain.com</backpage:replyEmail>
    <backpage:allowReplies>Anonymous</backpage:allowReplies>
    <backpage:superRegion>Bronx</backpage:superRegion>
    <backpage:region>Parkchester Bronx 6 Train</backpage:region>
    <backpage:adPlacedBy>Owner/Property Manager</backpage:adPlacedBy>
    <backpage:feeStatus>No Fee</backpage:feeStatus>
    <backpage:bedrooms>4</backpage:bedrooms>
    <backpage:price>1150.00</backpage:price>  
    <backpage:mapAddress>Metropolitan at mcgraw</backpage:mapAddress>
    <backpage:mapZip>10462</backpage:mapZip>
    <title>Gramercy / 2 Bed / NO FEE / ***VIRTUAL TOUR***</title>
    <description><![CDATA[
      Ad copy here...    
    ]]
>
</description>
  </item>

</rdf:RDF>

RSS 2.0 Example

<?xml version="1.0" encoding="ISO-8859-1" ?>

<rss version="2.0" xmlns:content="http://blogs.law.harvard.edu/tech/rss"
                   xmlns:backpage="http://www.backpage.com/rss/2.0"
>

<channel>  
  <backpage:import user="myname@mydomain.com" site="http://newyork.backpage.com" />

  <item>
    <backpage:id>155213
</backpage:id>
    <backpage:category>ApartmentsForRent</backpage:category>
    <backpage:replyEmail>advertiser1@myDomain.com</backpage:replyEmail>
    <backpage:allowReplies>No</backpage:allowReplies>
    <backpage:superRegion>Manhattan</backpage:superRegion>
    <backpage:region>New York City</backpage:region>
    <backpage:adPlacedBy>Agency/Locator Service</backpage:adPlacedBy>
    <backpage:feeStatus>Fee</backpage:feeStatus>
    <backpage:bedrooms>2</backpage:bedrooms>
    <backpage:price>345.66</backpage:price>
    <backpage:mapAddress>202 Mockingbird Lane</backpage:mapAddress>
    <backpage:mapZip>85716</backpage:mapZip>  

    <title>OPEN HOUSE! UNDERPRICED 1BD/1BA/RENOVATED!</title>
    <description><![CDATA[
      Ad copy here...
    ]]
>
</description>
  </item>

  <item>
    <backpage:id>155214
</backpage:id>
    <backpage:category>ApartmentsForRent</backpage:category>
    <backpage:replyEmail>advertiser2@myDomain.com</backpage:replyEmail>
    <backpage:allowReplies>Anonymous</backpage:allowReplies>
    <backpage:superRegion>Bronx</backpage:superRegion>
    <backpage:region>Parkchester Bronx 6 Train</backpage:region>
    <backpage:adPlacedBy>Owner/Property Manager</backpage:adPlacedBy>
    <backpage:feeStatus>No Fee</backpage:feeStatus>
    <backpage:bedrooms>4</backpage:bedrooms>
    <backpage:price>1150.00</backpage:price>  
    <backpage:mapAddress>Metropolitan at mcgraw</backpage:mapAddress>
    <backpage:mapZip>10462</backpage:mapZip>
    <title>Gramercy / 2 Bed / NO FEE / ***VIRTUAL TOUR***</title>
    <description><![CDATA[
      Ad copy here...    
    ]]
>
</description>
  </item>

</channel>

</rss>

^ Back to Top

The Details

Backpage.com will work with either RSS 1.0 or RSS 2.0 feeds. The following information documents the declarations, the common RSS elements, and the Backpage specific namespace elements.

Declarations

For RSS 1.0:

<rdf:RDF xmlns="http://purl.org/rss/1.0/"
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:backpage="http://www.backpage.com/rss/1.0"
>

For RSS 2.0:

<rss version=""innerAttrib">2.0" xmlns:content="http://blogs.law.harvard.edu/tech/rss"
                   xmlns:backpage="http://www.backpage.com/rss/2.0">

Required RSS Elements

<title>Central Park View Apartment for Rent</title>
<description><![CDATA[
  <p><b>Central Park View!</b></p>
  <p>Additional copy about the apartment would go here.</p> ]]></description>

Required Backpage Elements

The following elements are all required:

<backpage:import user="myname@mydomain.com" site="http://newyork.backpage.com" />
<backpage:id>155214</backpage:id>
<backpage:category>ApartmentsForRent</backpage:category>
<backpage:replyEmail>support@backpage.com</backpage:replyEmail>
<backpage:allowReplies>Anonymous</backpage:allowReplies>
<backpage:superRegion>Queens</backpage:superRegion>
<backpage:region>Forest Hills</backpage:region>

Additional Backpage Elements

The following elements are either optional or conditionally required based on the category the ad is to appear within. HTML is not permitted within any element, and all values are limited to 255 characters.

<backpage:adPlacedBy>Agency/Locator Service</backpage:adPlacedBy>
<backpage:feeStatus>Fee</backpage:feesStatus>
<backpage:bedrooms>2</backpage:bedrooms>
<backpage:roommates>Female Only</backpage:roommates>
<backpage:mapAddress>202 Mockingbird Lane</backpage:mapAddress>
<backpage:mapZip>10003</backpage:mapZip>
<backpage:petsAccepted>Cats Ok</backpage:petsAccepted>
<backpage:petsAccepted>Dogs Ok</backpage:petsAccepted>
<backpage:price>1150.00</backpage:price>
<backpage:contactPhone>555-867-5309</backpage:contactPhone>
<backpage:age>27</backpage:age>
<backpage:workStatus>Full-time</backpage:workStatus>
<backpage:workStatus>Part-time</backpage:workStatus>
<backpage:shift>Nights</backpage:shift>
<backpage:shift>Weekends</backpage:shift>
<backpage:education>Bachelor's Degree</backpage:education>
<backpage:salary>$18/hour to start</backpage:salary>

^ Back to Top

Putting it all together

The following shows an example of merging an existing RSS 2.0 feed with the additional Backpage Elements:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<rss version="2.0" xmlns:content="http://blogs.law.harvard.edu/tech/rss"
                   xmlns:backpage="http://www.backpage.com/rss/2.0"
>

<channel>  
  <title>backpage.com | rentals | new york, ny
</title>
  <webMaster>support@backpage.com</webMaster>
  <link>http://newyork.backpage.com/rentals/classifieds/Results?adLanguage=All&section=4376</link>
  <description>New York classifieds. Post free ads for apartments, houses for rent, jobs, furniture, appliances, cars, pets for sale and personals.</description>
  <language>en-us</language>
  <lastBuildDate>Fri, 26 Jan 2007 15:38:41 -0500</lastBuildDate>
  <copyright>Copyright 2007, Village Voice</copyright>
  <ttl>120</ttl>

  <backpage:import user="myname@mydomain.com" site="http://newyork.backpage.com" />

  <item>
    <backpage:id>155213
</backpage:id>
    <backpage:category>ApartmentsForRent</backpage:category>
    <backpage:replyEmail>advertiser1@myDomain.com</backpage:replyEmail>
    <backpage:allowReplies>No</backpage:allowReplies>
    <backpage:superRegion>Manhattan</backpage:superRegion>
    <backpage:region>New York City</backpage:region>
    <backpage:adPlacedBy>Agency/Locator Service</backpage:adPlacedBy>
    <backpage:feeStatus>Fee</backpage:feeStatus>
    <backpage:bedrooms>2</backpage:bedrooms>
    <backpage:price>345.66</backpage:price>
    <backpage:mapAddress>202 Mockingbird Lane</backpage:mapAddress>
    <backpage:mapZip>85716</backpage:mapZip>  

    <pubDate>Fri, 26 Jan 2007 15:38:38 -0500</pubDate>
    <link>http://newyork.backpage.com/rentals/classifieds/ViewAd?oid=1846585</link>
    <title>OPEN HOUSE! UNDERPRICED 1BD/1BA/RENOVATED!</title>
    <description><![CDATA[
      Ad copy here...
    ]]
>
</description>
  </item>

  <item>
    <backpage:id>155214
</backpage:id>
    <backpage:category>ApartmentsForRent</backpage:category>
    <backpage:replyEmail>advertiser2@myDomain.com</backpage:replyEmail>
    <backpage:allowReplies>Anonymous</backpage:allowReplies>
    <backpage:superRegion>Bronx</backpage:superRegion>
    <backpage:region>Parkchester Bronx 6 Train</backpage:region>
    <backpage:adPlacedBy>Owner/Property Manager</backpage:adPlacedBy>
    <backpage:feeStatus>No Fee</backpage:feeStatus>
    <backpage:bedrooms>4</backpage:bedrooms>
    <backpage:price>1150.00</backpage:price>  
    <backpage:mapAddress>Metropolitan at mcgraw</backpage:mapAddress>
    <backpage:mapZip>10462</backpage:mapZip>
    <pubDate>Fri, 26 Jan 2007 15:38:31 -0500</pubDate>
   <link>http://newyork.backpage.com/rentals/classifieds/ViewAd?oid=1846599</link>
    <title>Gramercy / 2 Bed / NO FEE / ***VIRTUAL TOUR***</title>
    <description><![CDATA[
      Ad copy here...    
    ]]
>
</description>
  </item>

</channel>

</rss>

The following shows an example of merging an existing RSS 1.0 file with the additional Backpage elements:

<?xml version="1.0"?>
<rdf:RDF xmlns="http://purl.org/rss/1.0/"
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:cl="http://www.craigslist.org/about/cl-bulk-ns/1.0"
         xmlns:backpage="http://www.backpage.com/rss/1.0"
>

  <channel>
    <items>
    <rdf:li rdf:resource="155213"/>
    <rdf:li rdf:resource="155214"/>
    
</items>

    <cl:auth username="username"
             password="password"
             accountID="123456"/
>
            
    <backpage:import user="yorick@y.com"
                     site="http://newyork.backpage.com" /
>
  
</channel>
  <item rdf:about = "155213">
    <backpage:id>155213
</backpage:id>
    <cl:category>fee</cl:category>
    <cl:area>nyc</cl:area>
    <cl:subarea>mnh</cl:subarea>
    <cl:neighborhood>Clinton</cl:neighborhood>
    <cl:housingInfo price="1850"
                    bedrooms="1" /
>
    <cl:replyEmail privacy="C">nona@anchornyc.com
</cl:replyEmail>
    <cl:brokerInfo companyName="Anchor Associates"
                   feeDisclosure="Broker Fee Apartment" /
>
                  
    <backpage:category>ApartmentsForRent
</backpage:category>
    <backpage:replyEmail>kelsie@sandman.net</backpage:replyEmail>
    <backpage:allowReplies>No</backpage:allowReplies>
    <backpage:superRegion>Manhattan</backpage:superRegion>
    <backpage:region>New York City</backpage:region>
    <backpage:adPlacedBy>Agency/Locator Service</backpage:adPlacedBy>
    <backpage:feeStatus>No Fee</backpage:feeStatus>
    <backpage:bedrooms>2</backpage:bedrooms>
    <backpage:price>345.66</backpage:price>
    <backpage:mapAddress>202 S. Tucson Blvd</backpage:mapAddress>
    <backpage:mapZip>85716</backpage:mapZip>  
                  
    <title>OPEN HOUSE! UNDERPRICED 1BD/1BA/RENOVATED! W50?S</title>
    <description><![CDATA[
      Ad copy here...
    ]]
>
</description>
  </item>
  <item rdf:about = "155214">
    <backpage:id>155214
</backpage:id>  
    <cl:category>nfb</cl:category>
    <cl:area>nyc</cl:area>
    <cl:subarea>mnh</cl:subarea>
    <cl:neighborhood>Gramercy Park</cl:neighborhood>
    <cl:housingInfo price="2700"
                    bedrooms="2"
                    CatsOK="1"
                    DogsOK="1" /
>
    <cl:replyEmail privacy="C">darren@anchornyc.com
</cl:replyEmail>
    <cl:brokerInfo companyName="Anchor Associates"
                   feeDisclosure="No-Fee Apartment" /
>
                  
    <backpage:category>ApartmentsForRent
</backpage:category>
    <backpage:replyEmail>yyy@yahoo.com</backpage:replyEmail>
    <backpage:allowReplies>Anonymous</backpage:allowReplies>
    <backpage:superRegion>Bronx</backpage:superRegion>
    <backpage:region>parkchester bronx 6 train</backpage:region>
    <backpage:adPlacedBy>Owner/Property Manager</backpage:adPlacedBy>
    <backpage:feeStatus>No Fee</backpage:feeStatus>
    <backpage:bedrooms>4</backpage:bedrooms>
    <backpage:price>1150.00</backpage:price>  
    <backpage:mapAddress>metropolitan at mcgraw</backpage:mapAddress>
    <backpage:mapZip>10462</backpage:mapZip>
                  
    <title>20's&3rd / Gramercy / 2 Bed / NO FEE / ***VIRTUAL TOUR***</title>
    <description><![CDATA[
      Ad copy...    
    ]]
>
</description>
  </item>

</rdf:RDF>

^ Back to Top

Validating

Before uploading your RSS feed, it may be helpful to validate it to check for errors. RSS is sensitive about typos, and one small mistake could cause an entire sheet to not work.

The W3C as a validation tool here for RSS feeds, either online or direct code.

^ Back to Top

Submitting Your Feed

There are three options to submit your RSS feeds to Backpage.com:

Option 1: Use the interactive bulk uploader

This is highly recommended for first time use and the best choice to help you validate your feed. To use this method, login into your bulk upload account and follow the on-screen instructions.

To login to your account now, click here: http://newyork.backpage.com/online/bulkupload/index

Option 2: Posting an HTTP feed

This process is typically used for scripting your own solution. To use this method you will need to POST your feed to the following URL:

http://posting.newyork.backpage.com/online/BulkUpload/PostAds

The required parameters are:

Example:

<form name="uploadForm"
      method="post"  
      action="http://posting.newyork.backpage.com/online/BulkUpload/PostAds"
>
  Email: <input type="text" name="email">
  Pass:  <input type="text" name="password">
  Url:   <input type="text" name="url">
  <input type="submit">
</form>
Option 3: Local file via a HTTP Post

This process is typically used for scripting your own solution. To use this method you will need to POST your feed to the following URL:

http://posting.newyork.backpage.com/online/BulkUpload/PostAds

The required parameters are:

The following perl script will illustrate this method in greater detail.

  #!/usr/bin/perl -w
  use strict;

  use Getopt::Long;
  use LWP::UserAgent;
  use HTTP::Request::Common;

  # ----------------------------------------------------------------------

  my $server = 'newyork.backpage.com';

  my($email, $password, $filename, $outputfile) = process_command_line();

  # You may choose to hard-code $email and $password here instead
  #   $email = 'your@email.address';
  #   $password = 'your password';

  # ----------------------------------------------------------------------

  my $ua = LWP::UserAgent->new();
  $ua->agent(qq|Backpage Form Upload Client ($email)|);

  my @parameters = ( email => $email,
                  password => $password,
                importFile => [ $filename ],
                     quiet => 'yes' );

  my $url = "http://posting.$server/online/BulkUpload/PostAds";
  my $req = POST($url, Content_Type => 'form-data',
                            Content => \@parameters );
  # $req->content_type('multipart/form-data');
  my $response = $ua->request($req);

  if ($response->is_success()) {
      my $output = $response->content();
      $output =~ s/^[\s\.]+//; # remove leading whitespace and marching dots

      if ($outputfile) {
          open(FILE,">$outputfile")
              or die(qq|Couldn't write output to "$outputfile", $!|);
          print FILE $output;
          close FILE;
      }
      else { print $output; }
  }
  else {
      print "HTTP request failed:\n";
      print $response->status_line() . "\n";
      exit 1;
  }

  # ----------------------------------------------------------------------

  sub process_command_line {
      my($email, $password, $filename, $outputfile);

      GetOptions( 'email=s' => \$email,
               'password=s' => \$password,
               'filename=s' => \$filename,
                 'output=s' => \$outputfile );

      my @errors;
      if (not $filename) { push(@errors, qq|missing --filename parameter|); }
      elsif (not -f $filename) { push(@errors, qq|"$filename" does not exist|); }
      elsif (not -r $filename) { push(@errors, qq|"$filename" is not readable|); }

      if (@errors) {
          print <<"EOQ";
    usage: $0
                   --filename="\$filename" (required)
                   --email="\$email"
                   --password="\$password"
                   --output="\$outputfile" (optional)

  EOQ
          foreach my $error (@errors) { print qq|  error: $error\n|; }
          exit 1;
      }
      return($email, $password, $filename, $outputfile);
  }

  # ----------------------------------------------------------------------
  



The HTTP Post Response for options 2 and 3 will return the following:

<?xml version="1.0"?>
<importResults>
  <userKey>11c1a37e
</userKey>
  <newAdCount>10</newAdCount>
  <updatedAdCount>42</updatedAdCount>
  <importError>If there was an error it would be here.</importError>
  <importError>If there was a second error it would be here.</importError>
</importResults>

^ Back to Top

Accessing Imported Ads by URL

If you have the need to manually access imported ads, there are two options:

Option 1: Click here to use the verification link retrieval form.

Option 2: Construct a direct link by using the following syntax:

http://nyc.backpage.com/post/userKey-adID

The userKey is static and can be found in the post response after importing. Specifically in the <userKey> element.

The adID is the unique ad id that was provided for the <backpage:id> element.

In the following examples, the userKey is "11c1a37e". The ad ids are "272209", "272210", "272242".

http://nyc.backpage.com/post/11c1a37e-272209
http://nyc.backpage.com/post/11c1a37e-272210
http://nyc.backpage.com/post/11c1a37e-272242

^ Back to Top

Category Key

adult entertainment
automotive
buy, sell, trade
community
jobs
musician
personals
real estate for sale
rentals
services

^ Back to Top

Backpage.com  |  About Us  |  Forums  |  Help  |  Contact  |  Privacy Policy  |  Terms of Use