craigslist Bulk Posting Interface


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:

To submit a request to post or validate postings:
  1. establish an HTTPS connection to craigslist at one of these URLs:
  2. send an HTTP request with a Content-Type of "application/x-www-form-urlencoded" and containing RSS content in the correct format
  3. wait 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" should be expressed as POSIX timestamps.

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
fee apts broker fee housing
nfb apts broker no fee housing
apa apts/housing for rent housing
off office & commercial housing
reb real estate - by broker housing
vac vacation rentals housing
acc accounting/finance jobs
ofc admin/office jobs
egr architect/engineer/cad jobs
med art/media/design jobs
bus business/mgmt jobs
csr customer service jobs
edu education/teaching jobs
etc et cetera jobs
fbh food/beverage/hospitality jobs
lab general labor jobs
gov government jobs
hea healthcare jobs
hum human resource jobs
eng internet engineering jobs
lgl legal/paralegal jobs
mnu manufacturing jobs
mar marketing/advertising/pr jobs
npo nonprofit jobs
rej real estate jobs
ret retail/wholesale jobs
sls sales jobs
spa salon/spa/fitness jobs
sci science/biotech jobs
sec security jobs
trd skilled trades/artisan jobs
sof software/qa/dba/etc jobs
sad systems/networking jobs
tch technical support jobs
trp transportation jobs
tfr tv/film/video/radio jobs
web web/html/info design jobs
wri writing/editing jobs
ctd cars & trucks - by dealer for sale
tid tickets - by dealer for sale

Areas and Subareas:

Area AbbreviationDescriptionSubarea AbbreviationDescription
aaa ann arbor, MI
abb fraser valley, BC
abi abilene, TX
abq albuquerque
abr northeast SD
aby albany, GA
abz aberdeen
aca acapulco
acc ghana
add ethiopia
adl adelaide, SA
aex central louisiana
agp malaga
ahn athens, GA
akl auckland, NZ
alb albany, NY
alc alicante
alt lehigh valley
ama amarillo, TX
amd ahmedabad
ame ames, IA
ams amsterdam / randstad
anb gadsden-anniston
anc anchorage / mat-su
anp annapolis, MD
aoo altoona-johnstown
app appleton-oshkosh-FDL
ash asheville, NC
ath greece
atl atlanta, GA
atl atlanta, GA atl city of atlanta
atl atlanta, GA eat otp east
atl atlanta, GA nat otp north
atl atlanta, GA sat otp south
atl atlanta, GA wat otp west
aub auburn, AL
aug augusta, GA
aus austin, TX
avp scranton / wilkes-barre
bak bakersfield, CA
bal baltimore, MD
bar barcelona
bbi bhubaneswar
bcd bacolod
bcs baja california sur
bel belleville, ON
ber berlin
bey beirut, lebanon
bfd brantford-woodstock
bff scottsbluff / panhandle
bgd iraq
bgl bangladesh
bgm binghamton, NY
bhm birmingham, AL
bhx birmingham / west mids
bil billings, MT
bio bilbao
bis bismarck, ND
bji bemidji, MN
bjx guanajuato
bkk thailand
blf belfast
blg bowling green, KY
bli bellingham, WA
bln bloomington-normal
blq bologna
bmg bloomington, IN
bnc boone, NC
bnd bend, OR
bne brisbane, QLD
bng bangalore
bod bordeaux
bog colombia
boi boise, ID
bos boston
bos boston bmw metro west
bos boston gbs boston/cambridge/brookline
bos boston nos north shore
bos boston nwb northwest/merrimack
bos boston sob south shore
bou boulder, CO
bpt beaumont / port arthur
brd brainerd, MN
bri brighton
brl vermont
brm bremen
brn bern
bro brownsville, TX
brr barrie, ON
brs bristol
bru belgium
bsb brasilia
bsl basel
btc battle creek, MI
bth bath, UK
btm butte, MT
btr baton rouge
bud budapest
bue buenos aires
buf buffalo, NY
buh romania
bwk brunswick, GA
bzn bozeman, MT
cae columbia, SC
cai egypt
cak akron / canton
cam cambridge, UK
can guangzhou
cap cape cod / islands
cas morocco
cat catskills
cbd southern illinois
cbg cumberland valley
cbo cariboo, BC
cbr canberra, ACT
ccs venezuela
cdo cagayan de oro
cdz cadiz
ceb cebu
ced cedar rapids, IA
cfl heartland florida
cgn cologne
cha charlotte, NC
chc chico, CA
che chennai (madras)
chh chihuahua
chi chicago
chi chicago chc city of chicago
chi chicago nch north chicagoland
chi chicago nwc northwest suburbs
chi chicago nwi northwest indiana
chi chicago sox south chicagoland
chi chicago wcl west chicagoland
chk chatham-kent, ON
chl chillicothe, OH
chm champaign urbana
chq chautauqua, NY
chr christchurch
chs charleston, SC
cht chattanooga, TN
cin cincinnati, OH
cjs ciudad juarez
ckg chongqing
ckv clarksville, TN
cle cleveland, OH
clg calgary, AB
cmu central michigan
cmx comox valley, BC
cnf belo horizonte
cnj central NJ
cns cairns, QLD
cok kerala
col columbus, OH
coo cookeville, TN
cop copenhagen
cor oregon coast
cos colorado springs
cou columbia / jeff city
cov coventry, UK
cpt cape town
crb caribbean islands
cri costa rica
crk pampanga
crp corpus christi, TX
crv corvallis/albany
crw charleston, WV
csd pierre / central SD
csg columbus, GA
cst college station, TX
ctu chengdu
cvn clovis / portales
cwb curitiba
cym cardiff / wales
dab daytona beach
dal dallas / fort worth
dal dallas / fort worth dal dallas
dal dallas / fort worth ftw fort worth
dal dallas / fort worth mdf mid cities
dal dallas / fort worth ndf north DFW
dal dallas / fort worth sdf south DFW
day dayton / springfield
dbq dubuque
dby derby, UK
del delhi
den denver, CO
det detroit metro
det detroit metro mcb macomb county
det detroit metro okl oakland county
det detroit metro wyn wayne county
dhn dothan, AL
dil decatur, IL
dlc dalian
dlh duluth / superior
dlw delaware
dnd dundee
dnv danville
drs dresden
drt del rio / eagle pass
drw darwin, NT
dsm des moines, IA
dub dublin, IE
dud dunedin, NZ
dur durban
dus dusseldorf
dvc devon & cornwall
dvo davao city
eau eau claire, WI
eco eastern CO
edi edinburgh
edm edmonton, AB
eid east idaho
eky eastern kentucky
elk elko, NV
elm elmira-corning
elp el paso, TX
eml east midlands
ena kenai peninsula
enc eastern NC
end northwest OK
eor east oregon
eri erie, PA
esh eastern shore
ess essen / ruhr
esx essex, UK
etx tyler / east TX
eug eugene, OR
evv evansville, IN
ewv eastern panhandle
ezf fredericksburg, VA
fai fairbanks, AK
far fargo / moorhead
fay fayetteville, NC
fca kalispell, MT
fdk frederick, MD
fgl finger lakes, NY
fhu sierra vista, AZ
flg flagstaff / sedona
flo florence, SC
flr florence / tuscany
fmc ft mcmurray, AB
fmy ft myers / SW florida
fmy ft myers / SW florida chl charlotte county
fmy ft myers / SW florida col collier county
fmy ft myers / SW florida lee lee county
fnm farmington, NM
fnt flint, MI
fra frankfurt
fre fresno / madera
fro faro / algarve
fsd sioux falls / SE SD
fsm fort smith, AR
ftc fort collins / north CO
ftd fort dodge, IA
ftl fortaleza
fuk fukuoka
fwa fort wayne, IN
fyv fayetteville, AR
gbo greensboro, NC
gdl guadalajara
gen genoa
gfk grand forks
gfl glens falls, NY
gil grand island, NE
gjt western slope
gla glasgow
gld gold country
gls galveston, TX
gnb grenoble
gnv gainesville, FL
goa goa
gph guelph, ON
gpt gulfport / biloxi
grb green bay, WI
grk killeen / temple / ft hood
grr grand rapids, MI
grx granada
gsp greenville / upstate
gtf great falls, MT
gua guatemala
gum guam-micronesia
gva geneva
haj hannover
ham hamburg
hat medicine hat, AB
hba tasmania
hdb heidelberg
hel finland
hez southwest MS
hfa haifa
hfx halifax, NS
hgh hangzhou
hhi hilton head
hij hiroshima
hkg hong kong
hky hickory / lenoir
hld holland, MI
hln helena, MT
hmb humboldt county
hml hamilton-burlington
hnf hanford-corcoran
hnl hawaii
hnl hawaii big big island
hnl hawaii kau kauai
hnl hawaii mau maui
hnl hawaii mol molokai
hnl hawaii oah oahu
hou houston, TX
hpr pretoria
hrm hermosillo
hrs harrisburg, PA
hsv huntsville / decatur
htf hartford, CT
hts huntington-ashland
hud hudson valley, NY
hum houma, LA
hvn new haven, CT
hyd hyderabad
iac iowa city, IA
ibz baleares
idr indore
ilo iloilo
imp imperial county
ind indianapolis
inl inland empire, CA
isp long island, NY
ist turkey
ith ithaca, NY
ixc chandigarh
jai jaipur
jan jackson, MS
jax jacksonville, FL
jbr jonesboro, AR
jfn ashtabula, OH
jkt indonesia
jln joplin, MO
jnb johannesburg
jnu southeast alaska
jrs jerusalem
jvl janesville, WI
jxn jackson, MI
jxt jackson, TN
jys jersey shore
kbp ukraine
kch kitchener-waterloo-cambridge
kel kelowna / okanagan
ken kent, UK
key florida keys
klf klamath falls, OR
klt kaiserslautern
kml kamloops, BC
kng kingston, ON
knx knoxville, TN
kol kolkata (calcutta)
koo kootenays, BC
kpr kennewick-pasco-richland
krk kirksville, MO
ksc kansas city, MO
kwi kuwait
kzo kalamazoo, MI
laf lafayette / west lafayette
lal lakeland, FL
lan lansing, MI
lau lausanne
law lawton, OK
lax los angeles
lax los angeles ant antelope valley
lax los angeles lac central LA 213/323
lax los angeles lgb long beach / 562
lax los angeles sfv san fernando valley
lax los angeles sgv san gabriel valley
lax los angeles wst westside-southbay-310
lbb lubbock, TX
lbf north platte, NE
lcq north central FL
lcr las cruces, NM
ldn london, UK
lds leeds
lej leipzig
lex lexington, KY
lft lafayette, LA
lgu logan, UT
lil lille
lim peru
lis lisbon
lit little rock
liv liverpool
lkc lake charles, LA
lko lucknow
lma lima / findlay
lnk lincoln, NE
lns lancaster, PA
lon london, ON
lou louisville, KY
loz lake of the ozarks
lpb bolivia
lrd laredo, TX
lse la crosse, WI
lsl la salle co
lth lethbridge, AB
lux luxembourg
lvg las vegas
lwr lawrence, KS
lws lewiston / clarkston
lyn lynchburg, VA
lys lyon
mad madison, WI
man manchester, UK
mbs saginaw-midland-baycity
mca mcallen / edinburg
mcn macon / warner robins
mdd madrid
mdo mendocino county
mdv meadville, PA
mei meridian, MS
mel melbourne, VIC
mem memphis, TN
mer merced, CA
mex mexico city
mfd mansfield, OH
mfr medford-ashland
mga nicaragua
mgm montgomery, AL
mhk manhattan, KS
mhv mohave county
mia south florida
mia south florida brw broward county
mia south florida mdc miami / dade county
mia south florida pbc palm beach county
mil milwaukee, WI
min minneapolis / st paul
min minneapolis / st paul ank anoka/chisago/isanti
min minneapolis / st paul csw carver/sherburne/wright
min minneapolis / st paul dak dakota / scott
min minneapolis / st paul hnp hennepin county
min minneapolis / st paul ram ramsey county
min minneapolis / st paul wsh washington co / WI
mkg muskegon, MI
mkt mankato, MN
mlb space coast, FL
mli quad cities, IA/IL
mlk moses lake, WA
mlu monroe, LA
mly malaysia
mml southwest MN
mne maine
mnl manila
mnr monroe, MI
mnt eastern montana
mob mobile, AL
mod modesto, CA
mon montreal, QC
mos moscow
mpl montpellier
mrs marseille
msc mason city, IA
msl florence / muscle shoals
mso missoula, MT
mtb monterey bay
mto mattoon-charleston
mty monterrey
muc munich
mum mumbai
mun muncie / anderson
mvd montevideo
mvw skagit / island / SJI
mxp milan
myr myrtle beach, SC
mzt mazatlan
nap napoli / campania
nbo kenya
nbw new brunswick
nce nice / cote d'azur
ncl newcastle / NE england
nct northwest CT
ndk north dakota
nfk hampton roads
nfl st john's, NL
ngo nagoya
nhm new hampshire
njy north jersey
nkg nanjing
nlo eastern CT
nmi northern michigan
nmo nanaimo, BC
nms north mississippi
nor new orleans
not nottingham, UK
nph tuscarawas co
nsc niagara region
nsh nashville, TN
nte loire valley
ntl newcastle, NSW
nue nuremberg
nwg northwest GA
nwh east anglia
nwi northern WI
nwk northwest KS
nyc new york city
nyc new york city brk brooklyn
nyc new york city brx bronx
nyc new york city fct fairfield co, CT
nyc new york city jsy new jersey
nyc new york city lgi long island
nyc new york city mnh manhattan
nyc new york city que queens
nyc new york city stn staten island
nyc new york city wch westchester
oaj jacksonville, NC
oax oaxaca
obx outer banks
oca ocala, FL
och deep east texas
odm odessa / midland
ogd ogden-clearfield
ohu athens, OH
oka okinawa
okc oklahoma city
okk kokomo, IN
okv winchester, VA
olp olympic peninsula
oma omaha / council bluffs
onh oneonta, NY
ool gold coast
orc orange county, CA
orl orlando, FL
osa osaka-kobe-kyoto
osl norway
osu stillwater, OK
ott ottawa-hull-gatineau
otu southeast IA
owb owensboro, KY
ows owen sound, ON
oxf oxford, UK
oxr ventura county
pak pakistan
pal west bank
pan panama
par paris, FR
pax peace river country
pbl puebla, MX
pdx portland, OR
pdx portland, OR clc clackamas county
pdx portland, OR clk clark/cowlitz WA
pdx portland, OR grg columbia gorge
pdx portland, OR mlt multnomah county
pdx portland, OR nco north coast
pdx portland, OR wsc washington county
pdx portland, OR yam yamhill co
peg perugia
pei prince edward island
pek beijing
per perth, WA
pfn panama city, FL
pgp porto alegre
phi philadelphia
phn port huron, MI
phx phoenix, AZ
phx phoenix, AZ cph central/south phx
phx phoenix, AZ evl east valley
phx phoenix, AZ nph phx north
phx phoenix, AZ wvl west valley
pia peoria, IL
pit pittsburgh, PA
pkb parkersburg-marietta
plb plattsburgh-adirondacks
plm pullman / moscow
pnq pune
pns pensacola, FL
poc poconos
prc prescott, AZ
prg prague
pri puerto rico
prv rhode island
psl treasure coast, FL
psp palm springs, CA
psu state college, PA
ptd potsdam-canton-massena
pto porto
pub pueblo, CO
pvr puerto vallarta
pvu provo / orem
qbc quebec city
qcy western IL
qui ecuador
rac kenosha-racine
ral raleigh / durham / CH
rap rapid city / west SD
rbg roseburg, OR
rck high rockies
rcs rochester, NY
rdd redding, CA
rea reading, PA
rec recife
red red deer, AB
reg regina, SK
rfd rockford, IL
ric richmond, VA
rin richmond, IN
rio rio de janeiro
rkv reykjavik
rmn rochester, MN
rno reno / tahoe
rns brittany
roa roanoke, VA
rom rome
rou normandy
row roswell / carlsbad
sac sacramento
saf santa fe / taos
sal el salvador
sat san antonio
sav savannah / hinesville
sba santa barbara
sbm sheboygan, WI
sbn south bend / michiana
scl chile
sdj sendai
sdk south dakota
sdo san diego
sdo san diego csd city of san diego
sdo san diego esd east san diego county
sdo san diego nsd north san diego county
sdo san diego ssd south san diego county
sdq dominican republic
sea seattle-tacoma
sea seattle-tacoma est eastside
sea seattle-tacoma kit kitsap / west puget
sea seattle-tacoma oly olympia / thurston
sea seattle-tacoma see seattle
sea seattle-tacoma skc south king co
sea seattle-tacoma sno snohomish county
sea seattle-tacoma tac tacoma / pierce
sek southeast KS
sel seoul
sev sevilla
sfo SF bay area
sfo SF bay area eby east bay area
sfo SF bay area nby north bay / marin
sfo SF bay area pen peninsula
sfo SF bay area sby south bay area
sfo SF bay area scz santa cruz co
sfo SF bay area sfc city of san francisco
sgf springfield, MO
sgy saguenay, QC
sha shanghai
shb sherbrooke, QC
shd harrisonburg, VA
she shenyang
shf sheffield
shv shreveport, LA
sic sicilia
sjt san angelo, TX
ske skeena-bulkley
skt saskatoon, SK
sky sandusky, OH
slc salt lake city
sle salem, OR
slo san luis obispo
sma south coast, MA
smd southern maryland
smo southeast missouri
smx santa maria, CA
sng singapore
snj south jersey
sns salina, KS
sof bulgaria
soo sault ste marie, ON
sou hampshire
sow show low, AZ
spi springfield, IL
spk spokane / coeur d'alene
spo sao paulo
spp sapporo
srd sardinia
srn sarnia, ON
srq sarasota-bradenton
ssa salvador, bahia
ssk siskiyou county
ssn susanville, CA
stc st cloud, MN
stg st george, UT
sth sweden
stj st joseph
stk stockton, CA
stl st louis, MO
stp st petersburg, RU
str stuttgart
sud sudbury, ON
sun sunshine coast, BC
sux sioux city, IA
svt surat surat
swk southwest KS
swm southwest michigan
swv southern WV
sxb strasbourg
syd sydney, NSW
syr syracuse, NY
szx shenzhen
tal tallahassee
tbr statesboro, GA
tby thunder bay, ON
tfn canarias
tha terre haute, IN
thb the thumb, MI
tij tijuana, MX
tls toulouse
tlv tel aviv
toc territories
tok tokyo
tol toledo, OH
tor toronto
tor toronto bra brampton-caledon
tor toronto drh durham region
tor toronto mss mississauga
tor toronto oak oakville-milton
tor toronto tor city of toronto
tor toronto yrk york region
tpa tampa bay area
tpa tampa bay area hdo hernando co
tpa tampa bay area hil hillsborough co
tpa tampa bay area pnl pinellas co
tpa tampa bay area psc pasco co
tpk topeka, KS
trh iran
tri tri-cities, TN
trn torino
trs trois-rivieres, QC
tsc tuscaloosa
tsu san marcos, TX
tts twin tiers NY/PA
tul tulsa, OK
tun tunisia
tus tucson, AZ
twd taiwan
twf twin falls, ID
txk texarkana
txm texoma
uae united arab emirates
usm hattiesburg, MS
ust st augustine, FL
uti utica-rome-oneida
uva charlottesville, VA
val valencia
van vancouver, BC
van vancouver, BC bnc burnaby/newwest
van vancouver, BC nvn north shore
van vancouver, BC pml tricities/pitt/maple
van vancouver, BC rch richmond
van vancouver, BC rds delta/surrey/langley
van vancouver, BC van city of vancouver
vaw southwest VA
vce venice / veneto
vcz veracruz
vic victoria, BC
vie vienna
vis visalia-tulare
vld valdosta, GA
vpi new river valley
vps okaloosa / walton
vrg virgin islands
vtn vietnam
vtx victoria, TX
wau wausau, WI
waw poland
wco waco, TX
wdc washington, DC
wdc washington, DC doc district of columbia
wdc washington, DC mld maryland
wdc washington, DC nva northern virginia
wen wenatchee, WA
whh whitehorse, YT
whi whistler / squamish
whl northern panhandle
wic wichita, KS
win winnipeg, MB
wky western KY
wll wellington
wlo waterloo / cedar falls
wma western massachusetts
wmd western maryland
wnc wilmington, NC
wnp bicol region
wol wollongong, NSW
wor worcester / central MA
wpt williamsport, PA
wsl winston-salem, NC
wsr windsor, ON
wtf wichita falls, TX
wtn watertown, NY
wtx southwest TX
wuh wuhan
wva west virginia (old)
wvu morgantown, WV
wyo wyoming
xiy xi'an
yak yakima, WA
ybs yuba-sutter, CA
ycc cornwall, ON
ykf yellowknife, NT
yng youngstown, OH
ypq peterborough, ON
yrk york, PA
yuc yucatan
yum yuma, AZ
yup upper peninsula, MI
yxs prince george, BC
zag croatia
zam zamboanga
zur zurich
zvl zanesville / 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