craigslist Bulk Posting Interface

Fri Jun 27 18:59:15 2014 UTC
Overview:   

craigslist provides a bulk posting interface for easy submission of multiple new posts in a single request to our server. This document describes that interface and how it is used.

New postings are submitted to the bulk interface in RSS format with additional craigslist-specific elements via HTTPS POST. craigslist returns another RSS document detailing which postings are valid or which have been posted.

A description of the protocol, RSS submission and response formats, and a reference of acceptable values is below.


Protocol:

Request:

Submitting a request to post or validate postings is done by:
  1. establishing an HTTPS connection to craigslist at one of these URLs:
  2. sending an HTTP request with a Content-Type of "application/x-www-form-urlencoded" and containing RSS content in the correct format
  3. waiting for a response.

See the code sample in this document for an example bulk post client.

Response:

Possible HTTP status values:

Posting Submission Format:

Below is a sample RSS bulk posting submission containing two NYC housing postings.

A submission consists of a <channel> element containing a list of postings to be processed (within <items> element), and a <cl:auth> element containing authentication credentials for the user submitting the postings. The <items> element should contain <rdf:li> elements, each having an attribute, rdf:resource=, whose value is an arbitrary user-supplied string identifying each posting. These identifiers need only be unique within the RSS document.

Additionally, there is an <item> element for every posting submitted, containing various subelements defining the post content. The about= attribute of this element should contain a value that matches one of the rdf:resource= attributes in an <rdf:li> element. A description of the various elements allowed within each <item> is below this 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:cl="http://www.craigslist.org/about/cl-bulk-ns/1.0">

  <channel>
    <items>
      <rdf:li rdf:resource="NYCBrokerHousingSample1"/>
      <rdf:li rdf:resource="NYCBrokerHousingSample2"/>
    </items>

    <cl:auth username="listuser@bogus.com"
             password="p0stp@rty"
             accountID="14"/>
  </channel>

  <item rdf:about="NYCBrokerHousingSample1">
    <cl:category>fee</cl:category>
    <cl:area>nyc</cl:area>
    <cl:subarea>mnh</cl:subarea>
    <cl:neighborhood>Upper West Side</cl:neighborhood>
    <cl:housingInfo price="1450"
                    bedrooms="0"
                    sqft="600"/>
    <cl:replyEmail privacy="C">bulkuser@bulkposterz.net</cl:replyEmail>
    <cl:brokerInfo companyName="Joe Sample and Associates"
                   feeDisclosure="fee disclosure here" />
    <title>Spacious Sunny Studio in Upper West Side</title>
    <description><![CDATA[
      posting body here
    ]]></description>
  </item>

  <item rdf:about="NYCBrokerHousingSample2">
    <cl:category>fee</cl:category>
    <cl:area>nyc</cl:area>
    <cl:subarea>mnh</cl:subarea>
    <cl:neighborhood>Chelsea</cl:neighborhood>
    <cl:housingInfo price="2175"
                    bedrooms="1"
                    sqft="850"
                    catsOK="1"/>
    <cl:mapLocation city="New York"
                    state="NY"
                    crossStreet1="23rd Street"
                    crossStreet2="9th Avenue"
                    latitude="40.746492"
                    longitude="-74.001326"
    />
    <cl:replyEmail privacy="C" 
                   otherContactInfo="212.555.1212">
      bulkuser@bulkposterz.net
    </cl:replyEmail>
    <cl:brokerInfo companyName="Joe Sample and Associates"
                   feeDisclosure="fee disclosure here" />
    <title>1BR Charmer in Chelsea</title>
    <description><![CDATA[
      posting body goes here
    ]]></description>
    <cl:PONumber>Purchase Order 094122</cl:PONumber>
    <cl:image position="1">/9j/4AAQSkZJRgABAQEASABIAAD/4QCARXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUA
AAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABIAAAAAQAA
AEgAAAABAAKgAgAEAAAAAQAAABCgAwAEAAAAAQAAABAAAAAA/9sAQwABAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB/9sAQwEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEB/8AAEQgAEAAQAwERAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//E
ALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJ
ChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeI
iYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq
8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQH
BQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJico
KSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZ
mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/a
AAwDAQACEQMRAD8A+4/jzpGrf8FNf2Kv27P+ClX7T/x08Z+Dv2ZvBPhL9orw/wDsDfs4eHvHUvgD
4Y3V58NrDxH4Q+H3xN+KMVvPbN8Q/iL48+Klja6VoXhu8nb/AInQn0C2k1TQ9T0nQLL+0eH61Hwt
444A8MOFchwWN4px+M4bxHiFxNiMAswzWMMzqYbG5jlWVOcZrLsty/Kak6uIxUIq1C2Il7LEUq2I
n/QeWVIcF8R8McHZJlmHxGdYnEZPV4pzerhVisbGOMnSxGLweCbUvqmEwuBnKdWtFL93aq+SpCdW
TPgHpOr/APBMz9in9hT/AIKV/swfHTxn4x/Zm8beFP2ePD37fP7OHiHx1L4/+GNrefEey8PeD/iB
8TfhdFcT3LfD34i+A/ilfXWl674bs51zrLQaDcSaXoem6toF6+IatHxS454+8MOKshwOC4pwOM4k
xPh7xNhsAsvzSdPLKmJxuXZXmrgorMstzDKYRq0MTOL/AHPNiIqriKtHEQeaVKfGnEfE/B2dZZh8
PnWGr5vV4WzijhfquNlHByq4jC4PGtcv1vCYrBRU6VaSf7vmqrnqThVj8N/ttfspePP2M9M+NP7L
37Yl/wDHvXP2C/hX8Of2nPHX/BNw/C/wdeap8DtV+PHxWtvGuvfDlP2hPFvhu6TWNE8W/D7xH4lF
lo2k+ILCTTZtXW+1iC50zwFqOuJ4u+84F4ty/jarkfFfBdPh+h4g5tmXC2A8Tf7VxsaWfUeH8ong
cPmT4cwmKi6FfB5jhsM6leth6ntVRcKDjVzCnQ+p/S8N55heIp5bnfD0cqp8U47GZLheMPruIjDM
4ZXgZYeljHlOHrJ06lDF0aLlUqUpe0UHCm1PFQpOg79ib9lPx1+2bpHwU/Zd/Y6vfj5oX7B/xU+H
X7M3jr/gpM3xQ8H3emfAzTfjt8KYPBevfEJf2evFviS6fWda8X/EHxD4baw1zSPD+nx6XFq50/Wp
rrU/Aen6LH4ROOuLcBwTWz3ivjSHD1fxAynMuKMB4YrKsbGrn1XIM3njsPlz4jweFgqFHB5bhsT7
ShWxFV1XR9pQUKWYVKzxhxJnmG4dqZnnfEMcrqcUYHF5zhuD/qWIjPM55ZjpYmlhP7WoUV7OnQwl
KtzUqlWXO6fPTShiZVHiP//Z
    </cl:image>
  </item>
</rdf:RDF>
    
Sample RSS Posting Submission

Inside <channel> Element:

Note: time-related attributes specified as "integer" will often be POSIX timestamps ; i.e. seconds since 1 January 1970 UTC (except when they aren't).

required:

Inside <item> Elements:

required:

optional:


Posting Response Format:

Below are some examples of an RSS response document for validation and posting, as well as a description of the craigslist-specific elements.

Validation:

<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">
  <channel>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="NYCBrokerHousingSample1"/>
        <rdf:li rdf:resource="NYCBrokerHousingSample2"/>
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="NYCBrokerHousingSample1">
    <cl:postedStatus>VALID</cl:postedStatus>
    <cl:postedExplanation>This posting seems to be valid.</cl:postedExplanation>
    <cl:previewHTML><![CDATA[
      HTML preview of posting will appear here.
    ]]></cl:previewHTML>
  </item>
  <item rdf:about="NYCBrokerHousingSample2">
    <cl:postedStatus>VALID</cl:postedStatus>
    <cl:postedExplanation>This posting seems to be valid.</cl:postedExplanation>
    <cl:previewHTML><![CDATA[
      HTML preview of posting will appear here.
    ]]></cl:previewHTML>
  </item>

</rdf:RDF>
    
Sample RSS Validation Response

Posting:

<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">
  <channel>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="NYCBrokerHousingSample1"/>
        <rdf:li rdf:resource="NYCBrokerHousingSample2"/>
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="NYCBrokerHousingSample1">
    <cl:postedStatus>POSTED</cl:postedStatus>
    <cl:postedExplanation>Successfully enqueued posting.</cl:postedExplanation>
    <cl:postingID>159144091</cl:postingID>
    <cl:postingManageURL>https://post.craigslist.org/manage/159144091/to6s1
    </cl:postingManageURL>
    <cl:previewHTML><![CDATA[
      HTML preview of posting will appear here.
    ]]></cl:previewHTML>
  </item>
  <item rdf:about="NYCBrokerHousingSample2">
    <cl:postedStatus>POSTED</cl:postedStatus>
    <cl:postedExplanation>Successfully enqueued posting.</cl:postedExplanation>
    <cl:postingID>159144092</cl:postingID>
    <cl:postingManageURL>https://post.craigslist.org/manage/159144092/b0n65
    </cl:postingManageURL>
    <cl:previewHTML><![CDATA[
      HTML preview of posting will appear here.
    ]]></cl:previewHTML>
  </item>

</rdf:RDF>
    
Sample RSS Posting Response

<item> Elements:

See the sample XSLT in this document for a possible way to process a response.

Note: If you submit a posting item with the same rdf:about as an existing posting item, the existing posting item will not be updated. Presently the only way to alter the content of a posting is via URL specificed in the cl:postingManageURL element.


Reference:

Categories:

AbbreviationDescriptionType
accaccounting/finance jobsJobs
busbusiness/mgmt jobsJobs
csrcustomer service jobsJobs
edueducation/teaching jobsJobs
egrarchitect/engineer/CAD jobsJobs
enginternet engineering jobsJobs
etcet cetera jobsJobs
fbhfood/beverage/hospitality jobsJobs
govgovernment jobsJobs
heahealthcare jobsJobs
humhuman resource jobsJobs
labgeneral labor jobsJobs
lgllegal/paralegal jobsJobs
marmarketing/advertising/PR jobsJobs
medart/media/design jobsJobs
mnumanufacturing jobsJobs
npononprofit jobsJobs
ofcadmin/office jobsJobs
rejreal estate jobsJobs
retretail/wholesale jobsJobs
sadsystems/networking jobsJobs
sciscience/biotech jobsJobs
secsecurity jobsJobs
slssales jobsJobs
sofsoftware/QA/DBA/etc jobsJobs
spasalon/spa/fitness jobsJobs
tchtechnical support jobsJobs
tfrtv/film/video/radio jobsJobs
trdskilled trades/artisan jobsJobs
trptransportation jobsJobs
webweb/HTML/info design jobsJobs
wriwriting/editing jobsJobs
apaapts/housing for rentHousing
feeapts broker feeHousing
nfbapts broker no feeHousing
offoffice & commercialHousing
rebreal estate - by brokerHousing
vacvacation rentalsHousing
ctdcars & trucks - by dealerFor Sale
tidtickets - by dealerFor Sale

Areas and Subareas:

Area AbbreviationDescriptionSubarea AbbreviationDescription
aaaann arbor  
abbfraser valley  
abiabilene  
abqalbuquerque  
abrnortheast SD  
abyalbany, GA  
aexcentral louisiana  
ahnathens, GA  
albalbany, NY  
altlehigh valley  
amaamarillo  
ameames, IA  
anbgadsden-anniston  
ancanchorage / mat-su  
anpannapolis  
aooaltoona-johnstown  
appappleton-oshkosh-FDL  
ashasheville  
atlatlantaatlcity of atlanta
atlatlantaeatotp east
atlatlantanatotp north
atlatlantasatotp south
atlatlantawatotp west
aubauburn  
augaugusta  
ausaustin  
avpscranton / wilkes-barre  
bakbakersfield  
balbaltimore  
belbelleville, ON  
bfdbrantford-woodstock  
bffscottsbluff / panhandle  
bgmbinghamton  
bhmbirmingham, AL  
bilbillings  
bisbismarck  
bjibemidji  
blgbowling green  
blibellingham  
blnbloomington-normal  
bmgbloomington, IN  
bncboone  
bndbend  
boiboise  
bosbostonbmwmetro west
bosbostongbsboston/cambridge/brookline
bosbostonnosnorth shore
bosbostonnwbnorthwest/merrimack
bosbostonsobsouth shore
bouboulder  
bptbeaumont / port arthur  
brdbrainerd  
brlvermont  
brobrownsville  
brrbarrie  
btcbattle creek  
btmbutte  
btrbaton rouge  
bufbuffalo  
bwkbrunswick, GA  
bznbozeman  
caecolumbia, SC  
cakakron / canton  
capcape cod / islands  
catcatskills  
cbdsouthern illinois  
cbgcumberland valley  
cbocariboo  
cedcedar rapids  
cflheartland florida  
chacharlotte  
chcchico  
chichicagochccity of chicago
chichicagonchnorth chicagoland
chichicagonwcnorthwest suburbs
chichicagonwinorthwest indiana
chichicagosoxsouth chicagoland
chichicagowclwest chicagoland
chkchatham-kent  
chlchillicothe  
chmchampaign urbana  
chqchautauqua  
chscharleston, SC  
chtchattanooga  
cincincinnati, OH  
ckvclarksville, TN  
clecleveland  
clgcalgary  
cmucentral michigan  
cmxcomox valley  
cnjcentral NJ  
colcolumbus, OH  
coocookeville  
cororegon coast  
coscolorado springs  
coucolumbia / jeff city  
crpcorpus christi  
crvcorvallis/albany  
crwcharleston, WV  
csdpierre / central SD  
csgcolumbus, GA  
cstcollege station  
cvnclovis / portales  
dabdaytona beach  
daldallas / fort worthdaldallas
daldallas / fort worthftwfort worth
daldallas / fort worthmdfmid cities
daldallas / fort worthndfnorth DFW
daldallas / fort worthsdfsouth DFW
daydayton / springfield  
dbqdubuque  
dendenver  
detdetroit metromcbmacomb county
detdetroit metrookloakland county
detdetroit metrowynwayne county
dhndothan, AL  
dildecatur, IL  
dlhduluth / superior  
dlwdelaware  
dnvdanville  
drtdel rio / eagle pass  
dsmdes moines  
eaueau claire  
ecoeastern CO  
edmedmonton  
eideast idaho  
ekyeastern kentucky  
elkelko  
elmelmira-corning  
elpel paso  
enakenai peninsula  
enceastern NC  
endnorthwest OK  
eoreast oregon  
erierie, PA  
esheastern shore  
etxtyler / east TX  
eugeugene  
evvevansville  
ewveastern panhandle  
ezffredericksburg  
faifairbanks  
farfargo / moorhead  
fayfayetteville, NC  
fcakalispell  
fdkfrederick  
fglfinger lakes  
fhusierra vista  
flgflagstaff / sedona  
floflorence, SC  
fmcft mcmurray  
fmyft myers / SW floridachlcharlotte county
fmyft myers / SW floridacolcollier county
fmyft myers / SW floridaleelee county
fnmfarmington, NM  
fntflint  
frefresno / madera  
fsdsioux falls / SE SD  
fsmfort smith, AR  
ftcfort collins / north CO  
ftdfort dodge  
fwafort wayne  
fyvfayetteville, AR  
gbogreensboro  
gfkgrand forks  
gflglens falls  
gilgrand island  
gjtwestern slope  
gldgold country  
glsgalveston  
gnvgainesville  
gphguelph  
gptgulfport / biloxi  
grbgreen bay  
grkkilleen / temple / ft hood  
grrgrand rapids  
gspgreenville / upstate  
gtfgreat falls  
hatmedicine hat  
hezsouthwest MS  
hfxhalifax  
hhihilton head  
hkyhickory / lenoir  
hldholland  
hlnhelena  
hmbhumboldt county  
hmlhamilton-burlington  
hnfhanford-corcoran  
hnlhawaiibigbig island
hnlhawaiikaukauai
hnlhawaiimaumaui
hnlhawaiimolmolokai
hnlhawaiioahoahu
houhouston  
hrsharrisburg  
hsvhuntsville / decatur  
htfhartford  
htshuntington-ashland  
hudhudson valley  
humhouma  
hvnnew haven  
iaciowa city  
impimperial county  
indindianapolis  
inlinland empire  
isplong island  
ithithaca  
janjackson, MS  
jaxjacksonville, FL  
jbrjonesboro  
jfnashtabula  
jlnjoplin  
jnusoutheast alaska  
jvljanesville  
jxnjackson, MI  
jxtjackson, TN  
jysjersey shore  
kchkitchener-waterloo-cambridge  
kelkelowna / okanagan  
keyflorida keys  
klfklamath falls  
kmlkamloops  
kngkingston, ON  
knxknoxville  
kookootenays  
kprkennewick-pasco-richland  
krkkirksville  
ksckansas city, MO  
kzokalamazoo  
laflafayette / west lafayette  
lallakeland  
lanlansing  
lawlawton  
laxlos angelesantantelope valley
laxlos angeleslaccentral LA 213/323
laxlos angeleslgblong beach / 562
laxlos angelessfvsan fernando valley
laxlos angelessgvsan gabriel valley
laxlos angeleswstwestside-southbay-310
lbblubbock  
lbfnorth platte  
lcqnorth central FL  
lcrlas cruces  
lexlexington, KY  
lftlafayette  
lgulogan  
litlittle rock  
lkclake charles  
lmalima / findlay  
lnklincoln  
lnslancaster, PA  
lonlondon, ON  
loulouisville  
lozlake of the ozarks  
lrdlaredo  
lsela crosse  
lslla salle co  
lthlethbridge  
lvglas vegas  
lwrlawrence  
lwslewiston / clarkston  
lynlynchburg  
madmadison  
mbssaginaw-midland-baycity  
mcamcallen / edinburg  
mcnmacon / warner robins  
mdomendocino county  
mdvmeadville  
meimeridian  
memmemphis, TN  
mermerced  
mfdmansfield  
mfrmedford-ashland  
mgmmontgomery  
mhkmanhattan, KS  
mhvmohave county  
miasouth floridabrwbroward county
miasouth floridamdcmiami / dade county
miasouth floridapbcpalm beach county
milmilwaukee  
minminneapolis / st paulankanoka/chisago/isanti
minminneapolis / st paulcswcarver/sherburne/wright
minminneapolis / st pauldakdakota / scott
minminneapolis / st paulhnphennepin county
minminneapolis / st paulramramsey county
minminneapolis / st paulwshwashington co / WI
mkgmuskegon  
mktmankato  
mlbspace coast  
mliquad cities, IA/IL  
mlkmoses lake  
mlumonroe, LA  
mmlsouthwest MN  
mnemaine  
mnrmonroe, MI  
mnteastern montana  
mobmobile  
modmodesto  
monmontreal  
mscmason city  
mslflorence / muscle shoals  
msomissoula  
mtbmonterey bay  
mtomattoon-charleston  
munmuncie / anderson  
mvwskagit / island / SJI  
myrmyrtle beach  
nbwnew brunswick  
nctnorthwest CT  
ndknorth dakota  
nfkhampton roads  
nflst john's, NL  
nhmnew hampshire  
njynorth jersey  
nloeastern CT  
nminorthern michigan  
nmonanaimo  
nmsnorth mississippi  
nornew orleans  
nphtuscarawas co  
nscniagara region  
nshnashville  
nwgnorthwest GA  
nwinorthern WI  
nwknorthwest KS  
nycnew york citybrkbrooklyn
nycnew york citybrxbronx
nycnew york cityfctfairfield co, CT
nycnew york cityjsynew jersey
nycnew york citylgilong island
nycnew york citymnhmanhattan
nycnew york cityquequeens
nycnew york citystnstaten island
nycnew york citywchwestchester
oajjacksonville, NC  
obxouter banks  
ocaocala  
ochdeep east texas  
odmodessa / midland  
ogdogden-clearfield  
ohuathens, OH  
okcoklahoma city  
okkkokomo  
okvwinchester  
olpolympic peninsula  
omaomaha / council bluffs  
onhoneonta  
orcorange county  
orlorlando  
osustillwater  
ottottawa-hull-gatineau  
otusoutheast IA  
owbowensboro  
owsowen sound  
oxrventura county  
paxpeace river country  
pdxportland, ORclcclackamas county
pdxportland, ORclkclark/cowlitz WA
pdxportland, ORgrgcolumbia gorge
pdxportland, ORmltmultnomah county
pdxportland, ORnconorth coast
pdxportland, ORwscwashington county
pdxportland, ORyamyamhill co
peiprince edward island  
pfnpanama city, FL  
phiphiladelphia  
phnport huron  
phxphoenixcphcentral/south phx
phxphoenixevleast valley
phxphoenixnphphx north
phxphoenixwvlwest valley
piapeoria  
pitpittsburgh  
pkbparkersburg-marietta  
plbplattsburgh-adirondacks  
plmpullman / moscow  
pnspensacola  
pocpoconos  
prcprescott  
prvrhode island  
psltreasure coast  
psppalm springs, CA  
psustate college  
ptdpotsdam-canton-massena  
pubpueblo  
pvuprovo / orem  
qbcquebec city  
qcywestern IL  
rackenosha-racine  
ralraleigh / durham / CH  
raprapid city / west SD  
rbgroseburg  
rckhigh rockies  
rcsrochester, NY  
rddredding  
reareading  
redred deer  
regregina  
rfdrockford  
ricrichmond, VA  
rinrichmond, IN  
rmnrochester, MN  
rnoreno / tahoe  
roaroanoke  
rowroswell / carlsbad  
sacsacramento  
safsanta fe / taos  
satsan antonio  
savsavannah / hinesville  
sbasanta barbara  
sbmsheboygan, WI  
sbnsouth bend / michiana  
sdksouth dakota  
sdosan diegocsdcity of san diego
sdosan diegoesdeast san diego county
sdosan diegonsdnorth san diego county
sdosan diegossdsouth san diego county
seaseattle-tacomaesteastside
seaseattle-tacomakitkitsap / west puget
seaseattle-tacomaolyolympia / thurston
seaseattle-tacomaseeseattle
seaseattle-tacomaskcsouth king co
seaseattle-tacomasnosnohomish county
seaseattle-tacomatactacoma / pierce
seksoutheast KS  
sfoSF bay areaebyeast bay area
sfoSF bay areanbynorth bay / marin
sfoSF bay areapenpeninsula
sfoSF bay areasbysouth bay area
sfoSF bay areasczsanta cruz co
sfoSF bay areasfccity of san francisco
sgfspringfield, MO  
sgysaguenay  
shbsherbrooke  
shdharrisonburg  
shvshreveport  
sjtsan angelo  
skeskeena-bulkley  
sktsaskatoon  
skysandusky  
slcsalt lake city  
slesalem, OR  
slosan luis obispo  
smasouth coast  
smdsouthern maryland  
smosoutheast missouri  
smxsanta maria  
snjsouth jersey  
snssalina  
soosault ste marie, ON  
sowshow low  
spispringfield, IL  
spkspokane / coeur d'alene  
srnsarnia  
srqsarasota-bradenton  
ssksiskiyou county  
ssnsusanville  
stcst cloud  
stgst george  
stjst joseph  
stkstockton  
stlst louis, MO  
sudsudbury  
sunsunshine coast  
suxsioux city, IA  
swksouthwest KS  
swmsouthwest michigan  
swvsouthern WV  
syrsyracuse  
taltallahassee  
tbrstatesboro  
tbythunder bay  
thaterre haute  
thbthe thumb  
tocterritories  
toltoledo  
tortorontobrabrampton-caledon
tortorontodrhdurham region
tortorontomssmississauga
tortorontooakoakville-milton
tortorontotorcity of toronto
tortorontoyrkyork region
tpatampa bay areahdohernando co
tpatampa bay areahilhillsborough co
tpatampa bay areapnlpinellas co
tpatampa bay areapscpasco co
tpktopeka  
tritri-cities, TN  
trstrois-rivieres  
tsctuscaloosa  
tsusan marcos  
ttstwin tiers NY/PA  
tultulsa  
tustucson  
twftwin falls  
txktexarkana  
txmtexoma  
usmhattiesburg  
ustst augustine  
utiutica-rome-oneida  
uvacharlottesville  
vanvancouver, BCbncburnaby/newwest
vanvancouver, BCnvnnorth shore
vanvancouver, BCpmltricities/pitt/maple
vanvancouver, BCrchrichmond
vanvancouver, BCrdsdelta/surrey/langley
vanvancouver, BCvancity of vancouver
vawsouthwest VA  
vicvictoria, BC  
visvisalia-tulare  
vldvaldosta  
vpinew river valley  
vpsokaloosa / walton  
vtxvictoria, TX  
wauwausau  
wcowaco  
wdcwashington, DCdocdistrict of columbia
wdcwashington, DCmldmaryland
wdcwashington, DCnvanorthern virginia
wenwenatchee  
whhwhitehorse  
whiwhistler, BC  
whlnorthern panhandle  
wicwichita  
winwinnipeg  
wkywestern KY  
wlowaterloo / cedar falls  
wmawestern massachusetts  
wmdwestern maryland  
wncwilmington, NC  
worworcester / central MA  
wptwilliamsport  
wslwinston-salem  
wsrwindsor  
wtfwichita falls  
wtnwatertown  
wtxsouthwest TX  
wvawest virginia (old)  
wvumorgantown  
wyowyoming  
yakyakima  
ybsyuba-sutter  
ycccornwall, ON  
ykfyellowknife  
yngyoungstown  
ypqpeterborough  
yrkyork, PA  
yumyuma  
yupupper peninsula  
yxsprince george  
zvlzanesville / cambridge  

Categories for which bulk posting is no longer supported:

Do not use the bulk posting interface to post to these categories. Thanks.
AbbreviationDescriptionType
aiv apts registration fee Housing
sbw sublet/temp wanted Housing
rew real estate wanted Housing
swp housing swap Housing
sub sublets & temporary Housing
rfsreal estate for saleDeprecated
reo real estate by owner Housing
prk parking & storage Housing
hou apts wanted Housing
ssl summer sublets Housing
abo apts by owner Housing
sha room/share wanted Housing
roo rooms & shares Housing
telnetwork/WAN/telcom jobs Jobs

Sample Bulk Post Client:

This example bulk posting client script is written in perl5 and requires the LWP perl module. It processes commandline options, reads an RSS file from disk, then submits it to craigslist for either verification or posting. It returns the reply RSS to STDOUT unless -o option is specified.
#!/usr/bin/perl
use LWP;
use LWP::UserAgent;
use Getopt::Std;
use strict;

use constant BASE_URL => 'https://post.craigslist.org/bulk-rss';

# process options
my $opts = {};
getopts('o:f:p', $opts);
my $post     = $opts->{'p'};
my $filename = $opts->{'f'};
my $outfile  = $opts->{'o'};
unless($filename) {
  print "usage: $0 [-p] [-o outfile] -f filename\n".
        "       options:\n".
        "       -f  -  the name of the RSS file to submit (required)\n".
        "       -p  -  actually post (otherwise just validate)\n".
        "       -o  -  output filename (otherwise results sent to STDOUT)\n\n";
  exit(0);
}

# open file
my $content = undef;
open(CFH, "<$filename") || die "can't open $filename for read: $!";
{ local $/ = undef; $content = <CFH>; }
close(CFH);

# prepare request
my $ua = LWP::UserAgent->new();
$ua->agent('SampleBulkPostClient/0.1');
my $post_url = BASE_URL .'/'. ($post? 'post': 'validate');
my $req = HTTP::Request->new( POST => $post_url );
$req->content_type('application/x-www-form-urlencoded');
$req->content($content);

# issue request
my $res = $ua->request($req);

# print result
if($res->is_success()) {
  if($outfile) {
    open(OFH,">$outfile") || die "can't open $outfile for write: $!";
    print OFH $res->content();
    close OFH;
  }
  else {
    print $res->content()."\n";
  }
}
else {
  print "request failed:\n".   
        $res->status_line()."\n".$res->content()."\n";
}

    
Sample Perl Bulk Posting Client Script

Sample XSLT for transforming from the Posting Response Format to HTML

Here's an example XSLT stylesheet for transforming a posting response. This example converts a posting response to HTML.
<xsl:stylesheet version = '1.0' 
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
     extension-element-prefixes="cl rdf"
     xmlns:rss="http://purl.org/rss/1.0/"
     xmlns:cl="http://www.craigslist.org/about/cl-bulk-ns/1.0"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

  <xsl:template match="/">
    <html>
      <head><title>Bulk posting results</title>
      <style type="text/css">
        tr.error { color : red; }
      </style>
      </head>
      <body>
        <xsl:apply-templates select="rdf:RDF"/>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="rdf:RDF">
    <h3> Bulk posting results: </h3>
    <xsl:apply-templates select="rss:channel"/>
    <table border="1">
    <thead>
      <tr> <td>Item</td><td>Status</td><td>Explanation</td><td>ID</td><td>Warnings</td> </tr>
    </thead>
    <xsl:apply-templates select="rss:item">
      <xsl:sort select="@rdf:about"/>
    </xsl:apply-templates>
    </table>
  </xsl:template>

  <xsl:template match="rss:channel">
    <xsl:apply-templates select="rss:items"/>
  </xsl:template>

  <xsl:template match="rss:item">
    <xsl:variable name='status' select="cl:postedStatus"/>
    <xsl:variable name='rowclass'>
      <xsl:choose>
        <xsl:when test="$status = 'POSTED' or $status = 'VALID'">
          <xsl:text>valid</xsl:text>
        </xsl:when>
        <xsl:otherwise>
          <xsl:text>error</xsl:text>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    <tr class="{$rowclass}">
      <td> <xsl:value-of select="@rdf:about"/> </td>
      <td> <xsl:value-of select="$status"/> </td>
      <td> <xsl:value-of select="cl:postedExplanation"/> </td>
      <td>
        <a href="{cl:postingManageURL}">
          <xsl:value-of select="cl:postingID"/>
        </a>
      </td>
      <td>
        <ul>
          <xsl:for-each select="cl:warning">
            <li>
              <xsl:value-of select="current()"/>
            </li>
          </xsl:for-each>
        </ul>
      </td>
    </tr>
  </xsl:template>
</xsl:stylesheet>
    
Sample XSLT